{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "37181073-d2f2-465c-9233-181fcca87353",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "#配置绘图的位置为当前画布内\n",
    "#%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5dbee0da-65ee-424e-8b3b-bb132bb9537a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 300x900 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAANkAAAFlCAYAAABmwU3MAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAErxJREFUeJzt239MVfX/wPEXoFx0CWQkCOGHmbOsFBQHQ3PORrHlLP9o0Y8Bc/6ojbaUlUamRFq3mjm3hlouta0aVktr6aDGdK2isUFupmFTTMgFQs2LUUFe3t+9z2fcr1fBD4d4yQWej+10O4dzOIez8/Tc+773hhljjABQE673qwFYRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAaEWmRfffWVLFmyRBITEyUsLEwOHDjwP7c5cuSIzJkzRzwej0ybNk327t070OMFRn5kHR0dkpqaKmVlZf1a/8yZM7J48WJZtGiRHD16VFavXi0rVqyQysrKgRwvMOyE/ZsPCNs72f79+2Xp0qV9rrNu3To5ePCg/PDDD4FljzzyiFy4cEEqKioGumtg2BijvYPq6mrJzs4OWpaTk+Pc0frS2dnpTD26u7vl999/l5tuuskJG9Bi7zkXL150Xg6Fh4cPj8iam5slPj4+aJmdb29vl7/++kvGjRt31TZer1dKS0u1Dw3oU1NTk9xyyy0yLCIbiOLiYikqKgrM+3w+mTJlivOHR0dHD+mxYWRrb2+X5ORkmTBhwqD9TvXIEhISpKWlJWiZnbex9HYXs+wopJ2uZLchMlwPg/myRP19sqysLKmqqgpa9uWXXzrLgdHAdWR//PGHMxRvp54hevv/jY2Ngad6+fn5gfWffPJJaWhokLVr10p9fb1s375dPvzwQ1mzZs1g/h1A6DIuHT582A75XzUVFBQ4P7ePCxcuvGqbtLQ0ExkZaaZOnWr27Nnjap8+n8/Zh30ENGlca//qfbLr+WI0JibGGQDhNRmG27XGZxcBZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyQBmRAcqIDFBGZIAyIgOUERmgjMgAZUQGKCMyIBQjKysrk5SUFImKipLMzEypqam55vrbtm2T2267TcaNGyfJycmyZs0a+fvvvwd6zMDwYlwqLy83kZGRZvfu3eb48eNm5cqVJjY21rS0tPS6/vvvv288Ho/zeObMGVNZWWkmT55s1qxZ0+99+nw+Yw/VPgKaNK4115FlZGSYwsLCwLzf7zeJiYnG6/X2ur5d95577glaVlRUZObPn9/vfRIZrheNa83V08Wuri6pra2V7OzswLLw8HBnvrq6utdt5s2b52zT85SyoaFBDh06JPfff3+f++ns7JT29vagCRiuxrhZua2tTfx+v8THxwctt/P19fW9bvPYY48529199932rimXLl2SJ598Up5//vk+9+P1eqW0tNTNoQGjd3TxyJEj8sorr8j27dulrq5OPvnkEzl48KBs2rSpz22Ki4vF5/MFpqamJu3DBELjThYXFycRERHS0tIStNzOJyQk9LrNhg0bJC8vT1asWOHMz5w5Uzo6OmTVqlWyfv165+nmlTwejzMBo+5OFhkZKenp6VJVVRVY1t3d7cxnZWX1us2ff/55VUg2VMs+fQRGOld3MquoqEgKCgpk7ty5kpGR4bwHZu9My5Ytc36en58vSUlJzusqa8mSJbJ161aZPXu2857aqVOnnLubXd4TGzCSuY4sNzdXWltbZePGjdLc3CxpaWlSUVERGAxpbGwMunO98MILEhYW5jyeO3dObr75Ziewl19+eXD/EiBEhdlxfAlxdgg/JibGGQSJjo4e6sPBCNaucK3x2UVAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEByogMUEZkgDIiA5QRGaCMyABlRAYoIzJAGZEBoRhZWVmZpKSkSFRUlGRmZkpNTc01179w4YIUFhbK5MmTxePxyPTp0+XQoUMDPWZgWBnjdoN9+/ZJUVGR7Ny50wls27ZtkpOTIydPnpRJkyZdtX5XV5fce++9zs8+/vhjSUpKkrNnz0psbOxg/Q1AaDMuZWRkmMLCwsC83+83iYmJ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",
      "text/plain": [
       "<Figure size 200x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(3,9))\n",
    "\n",
    "# 画板的比例会影响画布的比例\n",
    "figure = plt.figure(figsize=(2,4))\n",
    "\n",
    "# 画布如果没有显示的配置在某个画板上那么将默认被放在最近的一个画板之上\n",
    "axes = plt.subplot(111)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9007f9f1-6860-4481-ad48-1248ab7e8815",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5fae29cc-f3f2-4a9b-8062-ec449d54e131",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0, 2*np.pi, 100)\n",
    "y = np.sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "8ac5783d-eb68-417f-8c69-43f5b336f38e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.        , 0.06346652, 0.12693304, 0.19039955, 0.25386607,\n",
       "       0.31733259, 0.38079911, 0.44426563, 0.50773215, 0.57119866,\n",
       "       0.63466518, 0.6981317 , 0.76159822, 0.82506474, 0.88853126,\n",
       "       0.95199777, 1.01546429, 1.07893081, 1.14239733, 1.20586385,\n",
       "       1.26933037, 1.33279688, 1.3962634 , 1.45972992, 1.52319644,\n",
       "       1.58666296, 1.65012947, 1.71359599, 1.77706251, 1.84052903,\n",
       "       1.90399555, 1.96746207, 2.03092858, 2.0943951 , 2.15786162,\n",
       "       2.22132814, 2.28479466, 2.34826118, 2.41172769, 2.47519421,\n",
       "       2.53866073, 2.60212725, 2.66559377, 2.72906028, 2.7925268 ,\n",
       "       2.85599332, 2.91945984, 2.98292636, 3.04639288, 3.10985939,\n",
       "       3.17332591, 3.23679243, 3.30025895, 3.36372547, 3.42719199,\n",
       "       3.4906585 , 3.55412502, 3.61759154, 3.68105806, 3.74452458,\n",
       "       3.8079911 , 3.87145761, 3.93492413, 3.99839065, 4.06185717,\n",
       "       4.12532369, 4.1887902 , 4.25225672, 4.31572324, 4.37918976,\n",
       "       4.44265628, 4.5061228 , 4.56958931, 4.63305583, 4.69652235,\n",
       "       4.75998887, 4.82345539, 4.88692191, 4.95038842, 5.01385494,\n",
       "       5.07732146, 5.14078798, 5.2042545 , 5.26772102, 5.33118753,\n",
       "       5.39465405, 5.45812057, 5.52158709, 5.58505361, 5.64852012,\n",
       "       5.71198664, 5.77545316, 5.83891968, 5.9023862 , 5.96585272,\n",
       "       6.02931923, 6.09278575, 6.15625227, 6.21971879, 6.28318531])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3e143c7f-11bc-4a43-a9e2-d4d5abe96b36",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.00000000e+00,  6.34239197e-02,  1.26592454e-01,  1.89251244e-01,\n",
       "        2.51147987e-01,  3.12033446e-01,  3.71662456e-01,  4.29794912e-01,\n",
       "        4.86196736e-01,  5.40640817e-01,  5.92907929e-01,  6.42787610e-01,\n",
       "        6.90079011e-01,  7.34591709e-01,  7.76146464e-01,  8.14575952e-01,\n",
       "        8.49725430e-01,  8.81453363e-01,  9.09631995e-01,  9.34147860e-01,\n",
       "        9.54902241e-01,  9.71811568e-01,  9.84807753e-01,  9.93838464e-01,\n",
       "        9.98867339e-01,  9.99874128e-01,  9.96854776e-01,  9.89821442e-01,\n",
       "        9.78802446e-01,  9.63842159e-01,  9.45000819e-01,  9.22354294e-01,\n",
       "        8.95993774e-01,  8.66025404e-01,  8.32569855e-01,  7.95761841e-01,\n",
       "        7.55749574e-01,  7.12694171e-01,  6.66769001e-01,  6.18158986e-01,\n",
       "        5.67059864e-01,  5.13677392e-01,  4.58226522e-01,  4.00930535e-01,\n",
       "        3.42020143e-01,  2.81732557e-01,  2.20310533e-01,  1.58001396e-01,\n",
       "        9.50560433e-02,  3.17279335e-02, -3.17279335e-02, -9.50560433e-02,\n",
       "       -1.58001396e-01, -2.20310533e-01, -2.81732557e-01, -3.42020143e-01,\n",
       "       -4.00930535e-01, -4.58226522e-01, -5.13677392e-01, -5.67059864e-01,\n",
       "       -6.18158986e-01, -6.66769001e-01, -7.12694171e-01, -7.55749574e-01,\n",
       "       -7.95761841e-01, -8.32569855e-01, -8.66025404e-01, -8.95993774e-01,\n",
       "       -9.22354294e-01, -9.45000819e-01, -9.63842159e-01, -9.78802446e-01,\n",
       "       -9.89821442e-01, -9.96854776e-01, -9.99874128e-01, -9.98867339e-01,\n",
       "       -9.93838464e-01, -9.84807753e-01, -9.71811568e-01, -9.54902241e-01,\n",
       "       -9.34147860e-01, -9.09631995e-01, -8.81453363e-01, -8.49725430e-01,\n",
       "       -8.14575952e-01, -7.76146464e-01, -7.34591709e-01, -6.90079011e-01,\n",
       "       -6.42787610e-01, -5.92907929e-01, -5.40640817e-01, -4.86196736e-01,\n",
       "       -4.29794912e-01, -3.71662456e-01, -3.12033446e-01, -2.51147987e-01,\n",
       "       -1.89251244e-01, -1.26592454e-01, -6.34239197e-02, -2.44929360e-16])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "982ee1ff-dae1-4bff-aa4f-500ced7f327b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x200f8a88e00>]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUklJREFUeJzt3Xd4VGXexvHvTHpCEoSQBoGE3luQEqSJBsGGuoq6Ftayi4qKbFH0XYXdVdbVddF1wd5ddRWsKIqUANJL6D2EBEIIoaRQJu28f5wkGEkggcycmcn9ua65ZnLmlN/Q5uY5T7EZhmEgIiIiYgG71QWIiIhIw6UgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWMbX6gLOpqysjKysLEJDQ7HZbFaXIx7KMAwKCgqIjY3Fblf2FhFxJ24dRLKysoiLi7O6DPESmZmZtGjRwuoyRETkZ9w6iISGhgLmF0hYWJjF1Yinys/PJy4urvLPk4iIuA+3DiIVt2PCwsIUROSC6faeiIj7ceoN86lTp3LxxRcTGhpKZGQko0ePZvv27c68pIiIiHgQpwaRlJQUHnjgAZYvX87cuXMpKSkhOTmZ48ePO/OyIiIi4iFshmEYrrrYoUOHiIyMJCUlhcGDB59z//z8fMLDw8nLy9OtGTlv+nMkIuK+XNpHJC8vD4AmTZpU+77D4cDhcFT+nJ+f75K66sQwIH0x7PgejqZDWSlEtIV2yRA/CNQPQUREpNZc1iJiGAbXXnstR48eZfHixdXuM3nyZKZMmXLGdrf5n2zGcvjuUTiQWv37kV3gqhegZX+XliVnpxYRERH35bIg8sADDzB79myWLFlS41wO1bWIxMXFWf8FYhiw5AWY/zcwysAvBLqMhua9ARtkrYXNX0BRobn/pX+GQb9X64ibUBAREXFfLgkiDz74IF988QWLFi0iISGh1se5xReIYcCcSbBihvlz95thxNMQElF1vxNH4If/g9QPzZ/73A1X/lNhxA24xZ8jERGpllNHzRiGwfjx45k1axbz58+vUwhxGwueOR1CRj4H1796ZggBCG4Co6fDqOcBG6x+E+adeZtJRERETnNqZ9UHHniA//73v3z55ZeEhoaSnZ0NQHh4OEFBQc68dP3Y8Cks+of5+uoXIXHsuY/pey/4+MHXD8OSf0FkZ+h+k1PLFBER8VROvTVT00yWb7/9NmPHjj3n8ZY2qR/eDa8MguLjMHACXF7H1o35f4NFz4FfMNw7HyI7OaVMOTfdmhERcV9ObRFx4RQl9au0BGbebYaQ+EEw/Km6n2PoJNi3GtIWwBf3wd0/go9bz6gvIiLicloTvTorZkDWOghsDNe9CuezdLzdB0bPgMBw81xLX6z3MkVERDydgsgvHcuEBVPN18l/hfDm53+usBi44lnzdcpz5rlFRESkkoLIL82bYt6SaTkAet524efrcTO0TIKSkzD3zxd+PhERES+iIPJz+9fCxk8BG4x89vxuyfySrfxcNjts/hwyV134OUVERLyEgsjP/VjeKbX7GIjpUX/njekOPW81X8+bYk6SJiIiIgoildJ/gj2LwO4Hlz5R/+cf8ij4+JsL5qUtrP/zi4iIeCAFkQopfzefe90GjVvW//kbt4TE35ivF/+z/s8vIiLigRREwOy3UdEaMmii864z8CHzGumLIWOF864jIiLiIRRE4PQcH93HOKc1pEJ4C3MUDZir+YqIiDRwCiKHd8PWb8zXSeOdf72BEwAb7JhjXltERKQBUxBZ8SpgQNvLXbMeTERbaD+i/NqvOP96IiIibqxhBxFHAaz/yHzd/z7XXbfiWus+hJPHXHddERERN9Owg8iGT8CRD03bQuthrrtuwhCI7GzO4Lrhf667roiIiJtpuEHEMGDVm+bri++pn1lUa8tmgz53ma9Xv6UJzkREpMFquEFk32rI2QK+QdDjFtdfv/tN4BcMh7ZCxjLXX19ERMQNNNwgsvYd87nLaAhq7PrrB4ZD1xvKa3nP9dcXERFxAw0ziDgKYNMs83XvO6yro/ed5vPmL+BUvnV1iIiIWKRhBpEtX0LxCbOTassB1tXRog9EtIeSk+bKvCIiIg1MwwwiqeVDdnvcYnYctYrNZq5tA7DuA+vqEBERsUjDCyJH02HvEsB2erp1K3UfAzY77FsJR9KsrkZERMSlGl4QqZi3I2GwufaL1UKjofVQ87XmFBERkQamYQURwzj9Ze8OrSEVuo8xnzd8ojlFRESkQWlYQSR7AxzeCT4B0PEqq6s5reNV5pwiR9Jg/xqrqxEREXGZhhVENn5mPne4AgLDrK3l5wIaQYeR5uuKYcUiIiINQMMJIoZx+ku+66+sraU6FZObbf4cysqsrUVERMRFGk4Q2bca8veBfyNol2x1NWdqexkEhENBFmQut7oaERERl2g4QaRiwrAOo8Av0NpaquMbAB2vNF/r9oyIiDQQTg0iixYt4uqrryY2NhabzcYXX3zhzMvVrKwMtpRfu8t11tRQG11Gm89bv9btGRERaRCcGkSOHz9Ojx49ePnll515mXPbvxry94N/KLS51Npazqb1UPP2TGE2ZK6wuhoRERGn83XmyUeOHMnIkSOdeYna2fqV+dzhCve8LVPBN8AcPbPhY3M9nFYWroMjIiLiAk4NInXlcDhwOByVP+fn18OKtIYBW8qDSKdrLvh0eSeLWbP3CLtzjnPkRBGGAU1D/Gkb2YiecY25KMT/wi7Q+VoziGz9Cq6Yau1aOCIiIk7mVkFk6tSpTJkypX5Pmr0Rju0F3yBoO/y8TlFSWsbsjQf4ZFUmy9MOU1bD5Kd2G/RNaMItfVsysmsM/r7nceerzTDwCzFvJWWtg+a9z6tmERERT+BWQWTSpElMnDix8uf8/Hzi4uIu7KRbvzaf2w4H/5A6HWoYBnM2ZTP1u21kHDlRub11RAidYsOIDA0A4FCBgy0H8kk7dJzlaUdYnnaEfzbZwZ+u6MCV3WKw1aVVw688MG39CrZ9oyAiIiJeza2CSEBAAAEBAfV70m2zzedOV9fpsEMFDh6buYF523IAaBLizx0DWnFD7xbENQmu9pjMIyeYtXY/7y9PJ+PICcb/dx0zO+zj2Ru6ExlWh74pna42g8jWb2D4k3WqW0RExJN49zwiR/ZAzmaw+dRpErMVaYcZ+eIi5m3Lwd/HzkOXtmXJo8OYcFn7GkMIQFyTYB6+rB0pfxzGhMva4e9jZ8H2Q4x6aTFLd+XWvu52yWD3g9ztkLur9seJiIh4GKcGkcLCQlJTU0lNTQVgz549pKamkpGR4czLnrb9W/O5VRIEN6nVIZ+uzuTXb6wgt7CIjtGhfP3gJUxM7kCwf+0bj0ICfJlwWXu+ffgSOkaHkltYxB1vreTjlbX83EGNIf6Sqp9BRETECzk1iKxevZpevXrRq1cvACZOnEivXr148kkX3W6ouC1Ty5V2X1u0mz9+toGSMoOrusfw+f0D6RAdet6XbxsZyhcPDOTanrGUlBk8Nmsjr6Tsrt3BHUaZzwoiIiLixZzaR2To0KEYRg1DTJztxBHIWGa+7nDuuUxeTdnN1O+2AfC7Ia157IqOdetkWoNAPx+mjelJi4uC+M+C3fz9u22Ulhk8MKzt2Q/sMBK++6M5sdnxXAiJuOBaRERE3I339hHZOReMMojsAhe1OuuuH67YWxlCHrmsPZNGdqqXEFLBZrPxxxEd+eOIDgA89/123l2afvaDGsdBdDfzM+z4vt5qERERcSfeG0R2fGc+d7jirLv9sDmb//tiEwDjh7Xl4cvaOa2kB4a15aHh5vknf72ZOZsOnP2AitszO+Y4rSYREREreWcQKSmCXfPM1+1rvi2zaX8eD3+cimHALX1b8vvk9k4v7ZHL2vHrfi0xDHj441Q27DtW887tR5jPu+ebn0lERMTLeGcQyVgKjnwIjoDmidXucrjQwW/fW83J4lIGtYvgr9d2qdfbMTWx2WxMuaYLwzo0w1FSxu/eX8OhAkf1O8f0gkZRUFQIe39yem0iIiKu5p1BZMcP5nP7EWA/8yOWlhk8+NE6svJO0ToihP/8uje+Pq77pfD1sfPiLb1o0yyEA3mneOijdZSUlp25o91+ev4T3Z4REREv5J1BZGd5584aJjF7ad5Olu4+TLC/D6/enkhYoJ8LizOFBfrx2h19CPH3YVnaYf71447qd2xf3sdlxxxzAT8REREv4n1B5PBuOLwL7L7Q5tIz3l6edph/z98JwNTru9Eu6vznCblQbZo14u83dAdg+sLd1c++2noo+PjD0XTzc4mIiHgR7wsiO8tvy7RKgsCwKm/lnSjmkU9SKTPgpj4tuLZncwsKrOrqHrHc0jcOw4BH/pfKsRO/6JQa0AhaDTRfaxiviIh4Ge8NItXclnnyq00cyDtFfNNgnrq6i4sLq9mfr+pM62YhHMx38OcvN5+5Q8VnqfhsIiIiXsK7gkjRcUhfYr5uN6LKW3M2HeDL1CzsNvjXmJ6EBLjPwsPB/r7866ae+NhtfL0+i6/XZ1XdoWIY796lcCrf9QWKiIg4iXcFkT2LoLQIGreEiNMTkx09XlQ5adl9Q9vQq+VFVlVYox5xjSunfX/qq80cLvzZkN6mbaBJaygrhj0pFlUoIiJS/7wriOycaz63S4afzQny12+2kFtYRPuoRpUzm7qj8cPa0jE6lCPHi5j89Zaqb7a93Hyu+IwiIiJewHuCiGGc/pKu+NIGUnYcYta6/dhs8OwN3Qnw9bGowHPz97Xz3K96YLfB1+uzWLAt5/Sb7co/064fNYxXRES8hvcEkdydkJdhDnVNGATAqeJS/lx+S+Y3SQlueUvml7q1COfuSxIA+L8vNnGiqMR8I/4S8A2E/P2Qs9XCCkVEROqP9wSRXeWtIa0Ggn8IAP+ev5OMIyeIDQ90yToy9eWRy9vTvHEQ+4+d5MV55pwn+AWZYQROf1YREREP50VB5EfzufwWxq6cQl5blAbA5Gu6uNUomXMJ9vdlyjXm8OI3F+9hx8EC842KYbwVn1VERMTDeUcQKToB6eWLwrW9DMMwmPzVZopLDYZ3jCS5S7S19Z2HyzpHcVmnKErKDJ78chOGYUDby8w39y4DR6G1BYqIiNQD7wgi6Uug1AHhcRDRnu82ZbNkVy7+vna3mrisrp66ujMBvnaWpx3hmw0HzCG8F8Wbw3jTF1tdnoiIyAXzjiBScaui7WWcLC7j6dlmZ85xQ9rQsmmwhYVdmLgmwZVzizw9eysniktPt4ro9oyIiHgB7wgiu+eZz22H80rKbvYfO0nzxkHcN6SNtXXVg98Obk1ckyCy808xfcFuBREREfEqnh9EjuypXG03q0lfXknZDcDjozoR5O++c4bUVqCfD0+M6gzAa4vT2BfeB+x+5avx7ra2OBERkQvk+UGkojUkrh9T52fhKCmjb0ITRnXzvA6qNRnRJYqBbZtSVFLGM/MyoGV/841d86wtTERE5AJ5fhAp/zLe33QAX6/PwmaDJ6/qjO1nU7x7OpvNxp+v6ozdBt9uzCajyQDzjd0KIiIi4tk8O4iUFJkL3QH/TIsD4KbEOLo2D7eyKqfoGB3GLX1bAvD87hbmxj2LzV8DERERD+XZQWTfSigqxOHfhM+zmxLi78PvR3jODKp19cjl7QkN8OWrg005FdAUio9DxjKryxIRETlvnh1Eym/LLCzpgoGd+4e1JTI00OKinCeiUQAPXNoWsDG/uKu5cfd8S2sSERG5EJ4dRMr7SHx/qgux4YGVi8V5s7FJ8TRvHMT3p8onalM/ERER8WCeG0QKD8GB9QAsLuvOH6/oQKCf5w/XPZdAPx/+dEUHlpR1Mzdkb4TCHGuLEhEROU8uCSLTp08nISGBwMBAEhMTWby4HqYnT1sAwJayVkQ1b8m1PZpf+Dk9xDU9YmkR14qNZfHmBt2eERERD+X0IPLJJ58wYcIEnnjiCdatW8egQYMYOXIkGRkZF3Te/M3fA7CorDuPj+qE3e49w3XPxWaz8cSoTiwq6w5A/qY5FlckIiJyfpweRF544QXuvvtu7rnnHjp16sS0adOIi4tjxowZ539Sw6Bsl9kKUNhiMEltIuqpWs/RN6EJJ1sONX/YvQDKyiytx2qHdiznxw/+zomcdKtLERGROnBqECkqKmLNmjUkJydX2Z6cnMzSpUvP2N/hcJCfn1/lUZ2Na36icekRThgBjL72eqfU7gmuv+Y6Co1AwsqOsX51w16Nd+uc17ls11TWvP+41aWIiEgdODWI5ObmUlpaSlRUVJXtUVFRZGdnn7H/1KlTCQ8Pr3zExcVVe96moQGsbjSUHU2G0jam4bWGVGgd3YR94YkArFswk7Iyw+KKrLElK5/YXDPYNr/4KourERGRunBJZ9VfTrduGEa1U7BPmjSJvLy8ykdmZma154vtcDF9/vAl3R78xCn1epIW5V+8HQpX8eX6/RZX43qGYfDa1ym0tWdRhp3WF4+0uiQREakDpwaRiIgIfHx8zmj9yMnJOaOVBCAgIICwsLAqj7PxaUAdVGvSqPMIABLt23n5u1ROFZdaXJFrLdxxiMCMhQAUR/eGoIusLUhEROrEqUHE39+fxMRE5s6dW2X73LlzSUpKcualG46mbShrHI+/rZT4wrW8uWSP1RW5TElpGc/M3sog+wYAAjpebnFFIiJSV06/NTNx4kTeeOMN3nrrLbZu3cojjzxCRkYG48aNc/alGwx720sBGGzfwIyFu8ktdFhckWv8b/U+0nLyGOSz2dzQZri1BYmISJ05PYiMGTOGadOm8Ze//IWePXuyaNEivv32W1q1auXsSzcc5V/Al/tvptBRwr/m7rC4IOcrdJTwwtzt9LDtJozjENgYmve2uiwREakjl3RWvf/++0lPT8fhcLBmzRoGDx7siss2HAmDwe5LbFkWcbaDfLQygx0HC6yuyqleWbib3MIirmm01dzQeijYvX+KfxERb+O5a83IaYFh0KIvAOOap1NmwNOzt1pclPPsO3qC1xenATA6dJu5sa1uy4iIeCIFEW9R/kV8Xeg2/HxspOw4xILt3rkY3rNztuMoKWN4vB/hRzeaG9U/RETEIymIeIvyIBK8/yfu6m8uAPi3b7ZQXOpdU7+vTj/C1+uzsNngqc452IwyaNYRwhvOoociIt5EQcRbRPeA4AgoKuShDkdpGuLP7kPHeX/ZXqsrqzdlZQZTvt4CwJg+cbQ8usx8o+1lFlYlIiIXQkHEW9jt0MYcxhuSsZDfJ3cA4F8/7uCwlwzn/WztPjbuz6NRgC+/v7w97JpnvqH+ISIiHktBxJtUtAzsmseYi+PoEhtGwakSnv9hu7V11YP8U8X8Y47ZMfWh4W1pdjINCg6AbxC01OR4IiKeSkHEm5S3iJC9AZ/jOUy+pgsAH6/KZH3mMevqqgfT5u4kt7CI1s1CGJuUALt+NN+IvwT8Aq0tTkREzpuCiDdp1Axiepqvd8/j4vgmXN+rOYYBT365iVIPXZ1364F83l2WDsDkq7vg72s/HUR0W0ZExKMpiHibytsz5hf1YyM7Ehrgy/p9eXy0MsPCws5PWZnBn78wQ9SobtEMbt8MHIWQUdFRVevLiIh4MgURb1MRRHbPh7JSIsMCmZjcHoB/zNnGoQLP6rj6v9WZrN57lGB/H/7vys7mxvTFUFoEjVtB0zbWFigiIhdEQcTbtLgYAsPh5FHYvxaA2/u3oktsGPmnSvjb7C0WF1h7uYUOpn5ndlCdeHl7YhsHmW/sLF/Nud3lYLNZVJ2IiNQHBRFv4+MLrYeZr3eZX9i+PnamXt8Nuw2+TM3ymBlXp3y9hbyTxXSOCWNsUry50TAqP5duy4iIeD4FEW/UrvwLuqLlAOjeojG/GZgAwBOzNlJwqtiKympt3taDfL0+C7sN/n5DN3x9yv+o5u6EYxng42+OmBEREY+mIOKNKvqJZK2DwkOVm3+f3J64JkFk5Z3i7+W3PNxR3oliHv/cXEPmnkGt6d6i8ek3K1pDWg2EgEauL05EROqVgog3Co2G6O6AAbvnVW4O9vfl2Ru6A/DhigwW7ThUwwmsNeWbzRzMd9A6IoSJl7ev+ubOH8zndsmuL0xEROqdgoi3qvii3vF9lc1JbSK4c0ArAP702QaOnShydWVn9e3GA8xaux+bDZ67sTuBfj6n33QUwt6l5msFERERr6Ag4q0qvqh3z4PSkipvPTayE60jQsjOP8WkWRsxDPeY6Cw771TlLZn7h7YhsVWTqjvsSTGH7V4Ur2G7IiJeQkHEW7XoA0EXwak82LeyyltB/j5Mu7knvnYb323K5qOVmRYVeVpJaRkPfbSOYyeK6dY8nIeHtz9zp4rWnXYjNGxXRMRLKIh4K7vP6U6rv7g9A+Yomj+MMFfonfz1Zjbtz3NldWeY9uNOVqYfoVGAL/++pZc5jfvPGcbp/iHtdVtGRMRbKIh4s3YjzOeKL/Bf+O2g1lzaMZKikjLu/3AtR49b01/kh83ZvLxgFwBPX9eV+IiQM3fK3mCutusXAq00bFdExFsoiHiztsPB5gM5W+Do3jPettttvHBTD+KaBJFx5ATjP1pLSWmZS0vcnl3AxP+tB2BsUjzX9mxe/Y4VrTqth2q1XRERL6Ig4s2Cm0DL/ubram7PADQO9uf1O/oQ7O/DT7sO8+cvN7ms8+qhAgd3vbOKQkcJ/RKa8MSVnWreeft35nP7ES6pTUREXENBxNtVfHHv+K7GXTpGh/Hizb2w2+CjlZm8NG+X08vKP1XMnW+tZP+xk8Q3DeaV2xLx86nhj2NBNmSZ6+YoiIiIeBcFEW/XfqT5nL4EHAU17nZ55ygmX9MFgH/9uIM3Fqc5raRCRwl3vb2KLQfyiWjkzzu/6ctFIf41H1DRmhPb25ysTUREvIaCiLeLaAdN2pjzb+yef9Zd7xgQz+/LZzL92+ytTF9Y/y0jeSfMlpDVe48SGujLO7/pW33n1J/bMcd87jCy3usRERFrKYh4O5vt9Bf4tm/Pufv4S9vy0PB2APxjznYmf7WZ0rL66TOy7+gJbnx1KWv2HiUs0JcP7+lH1+bhZz+o6ATsXmC+bn9FvdQhIiLuQ0GkIegwynze+f0Zs6z+ks1mY+Ll7XlilNlx9J2l6dzx1goOFTguqITFOw9xzcs/seNgIVFhAfxv3ICqi9nVJG0hlJyE8JYQ3e2CahAREffj1CDy9NNPk5SURHBwMI0bN3bmpeRs4vpBUBM4eRQyl9fqkHsHt2b6r3sT5GeOprli2iK+Wp9V5xE1+aeKeerLTdz+5kqOHC+ia/MwZt0/kI7RYbU7wbbZ5nPHUZpNVUTECzk1iBQVFXHjjTdy3333OfMyci4+vqdva2z9ptaHjeoWw1fjB9IxOpTDx4t46KN13PjKMlJ2HKLsHLdrCk4V8/qiNC59fiHvLjPnMLmtf0s+G5dE88ZBtSugtAS2l99O6nhlresWERHPYTNcMGnEO++8w4QJEzh27FidjsvPzyc8PJy8vDzCwmr5P2ip3rbZ8PGtEB4HEzbWqXWhqKSM6Qt38UrKbk4VmxOetbgoiMs6RdGrZWOaNw4iwNeH/FPF7MopZHnaYRZsz6nct3VECJOv6cLg9s3qVnP6T/DOKAhsDH/cbQaq86A/RyIi7uv8/mV3EofDgcNxui9Cfn6+hdV4mTaXgl8w5GXCgfUQ27PWh/r72plwWXtu6duSV1J289nqfew7epJ3lqbzztKaj2sb2Yh7ByVwXa8WZ64dUxtbvzafO4w87xAiIiLuza3+dZ86dSpTpkyxugzv5BdkTvm+9WvzUYcgUiEqLJCnru7Cn0Z0JGXHIZbuzmXrgXwO5jsoKikjJMCHVk1D6BnXmCHtm9G9RTi28+3XYRing0ina87vHCIi4vbqHEQmT558zrCwatUq+vTpU+diJk2axMSJEyt/zs/PJy4urs7nkRp0usb8ct/yJVz6f+fd+TPI34crukZzRVcnTi6WtRby95mL3LUZ5rzriIiIpeocRMaPH8/NN9981n3i4+PPq5iAgAACAgLO61iphfYjwMcfDu+EQ9sg8ixru1hty1fmc/tkszVHRES8Up2DSEREBBEREc6oRZwtMNzsK7JjDmz+wn2DiGHAli/M17otIyLi1Zw6fDcjI4PU1FQyMjIoLS0lNTWV1NRUCgsLnXlZOZvOo83nii96d3QgFY6mg2+QFrkTEfFyTu2s+uSTT/Luu+9W/tyrVy8AFixYwNChQ515aalJh5Hm7ZlD2+DgFojqbHVFZ9r8hfncfgT4n2MdGhER8WhObRF55513MAzjjIdCiIWCGkOb4ebrzbMsLaVahgGbPzdfd7nO2lpERMTptNZMQ9T1BvN50yzzi9+d7FsNx/aao2XaJVtdjYiIOJmCSEPUYaTZ/+LIbrM/hjvZ+Kn53Okq8A+2thYREXE6BZGGKKARdChfe2bDp9bW8nOlJadvF3X9lbW1iIiISyiINFTdx5jPGz81A4A72LMQjh8yVwrWJGYiIg2CgkhD1fYy8wv/eI4ZANxB6kfmc9cbwMfP2lpERMQlFEQaKh+/051WKwKAlU7lwbZvzNc9b7G2FhERcRkFkYas4gt/69dw8qi1tWz+AkpOQUQHiO1tbS0iIuIyCiINWWxviOwMpQ7YNNPaWtZ9YD73vOW8F+MTERHPoyDSkNls0Os283VFELBCzlbYtxJsPtBDt2VERBoSBZGGrvsYsPtB1jrISrWmhrXvmc8dRkJotDU1iIiIJRREGrqQCOhcvsLtmrddf/3ik7C+vLNs7ztdf30REbGUgohAn7vM5w2fwql8115700yzo2x4S2g73LXXFhERyymICLQaCM06QvFxSP2v665rGLDiVfP1xXeD3cd11xYREbegICJmp9W+vzVfr3gFykpdc93MlZC9AXwDofcdrrmmiIi4FQURMfW4GQIbw9E9sON711xz6Uvmc7dfQXAT11xTRETcioKImPxDIHGs+fqnF51/vdxdsG22+XrAg86/noiIuCUFETmt3zjw8YfM5bB3qXOvtezfgAHtRkBkR+deS0RE3JaCiJwWFgM9f22+XvS8865zLBPWfWi+vmSC864jIiJuT0FEqhr4sDnD6e55kLHcOddY8gKUFUPCYGiV5JxriIiIR1AQkaqaJJye9n3eX8whtvXpSBqsfd98PeSx+j23iIh4HAUROdOQP4FPAOz9CXb+UL/n/nGK2RrSZjjED6zfc4uIiMdREJEzhbeAfuXzisyZBCVF9XPejOWw5Quw2SH5r/VzThER8WgKIlK9wX+CkEg4shuW/+fCz1daDN88Yr7udRtEdbnwc4qIiMdTEJHqBYbB5X8xXy+YCod2XNj5fnoRcrZAcFO4bMqF1yciIl5BQURq1uNmaHMplDrgi/vMVo3zkbUOFk41X494RrOoiohIJQURqZnNBle/BAFhsH81zH2y7uc4eQw+uxvKSqDTNdB9TL2XKSIinktBRM6ucRyMnmG+Xj4d1rxb+2NLi+HTO81+JmEt4OoXzXAjIiJSzmlBJD09nbvvvpuEhASCgoJo06YNTz31FEVF9TQCQ1yn01Uw+I/m628mwIb/nfuYEgf8705IWwh+IXDrx7olIyIiZ/B11om3bdtGWVkZr776Km3btmXTpk3ce++9HD9+nOefd+L04eIcw56AwhxY+y7MuhcO7zLDiY/fmfvm7TNvx2QuN+cjuek9iO7m+ppFRMTt2QyjvqfOrNlzzz3HjBkzSEtLq9X++fn5hIeHk5eXR1hYmJOrk3MqKzX7iSx72fw5sjMkPWh2aA0MN2dN3TQTVrwKRYVm35Kb3oM2wywtW3+ORETcl9NaRKqTl5dHkyY1N887HA4cDkflz/n5+a4oS2rL7gMjnobo7jDnMXM47hf3Vb9v8z5ww+vQpLVraxQREY/iss6qu3fv5t///jfjxo2rcZ+pU6cSHh5e+YiLi3NVeVIXPcbAg2tg+JPQrJO5SB6AbxC0vRxueh/u+VEhREREzqnOt2YmT57MlClnn5Bq1apV9OnTp/LnrKwshgwZwpAhQ3jjjTdqPK66FpG4uDg1qbu7Eof58G8EdvcbiKVbMyIi7qvOQSQ3N5fc3Nyz7hMfH09gYCBghpBhw4bRr18/3nnnHex1+KLSF4jUB/05EhFxX3XuIxIREUFERESt9t2/fz/Dhg0jMTGRt99+u04hRERERLyf0zqrZmVlMXToUFq2bMnzzz/PoUOHKt+Ljo521mVFRETEgzgtiPzwww/s2rWLXbt20aJFiyrvuXDEsIiIiLgxp90rGTt2LIZhVPsQERERARfPI1JXFaFF84nIhaj486MQLCLiftw6iBQUFABoPhGpFwUFBYSHh1tdhoiI/IxLp3ivq7KyMrKysggNDcX2i1VbK+YYyczM9Johmd72mdzl8xiGQUFBAbGxsRq5JSLiZty6RcRut5/R0fWXwsLCvOJL++e87TO5w+dRS4iIiHvSfw9FRETEMgoiIiIiYhmPDSIBAQE89dRTBAQEWF1KvfG2z+Rtn0dEROqfW3dWFREREe/msS0iIiIi4vkURERERMQyCiIiIiJiGQURERERsYxbB5Hp06eTkJBAYGAgiYmJLF68+Kz7p6SkkJiYSGBgIK1bt+aVV15xUaXnNnXqVC6++GJCQ0OJjIxk9OjRbN++/azHLFy4EJvNdsZj27ZtLqq6ZpMnTz6jrujo6LMe486/PyIiYg23DSKffPIJEyZM4IknnmDdunUMGjSIkSNHkpGRUe3+e/bsYdSoUQwaNIh169bx+OOP89BDDzFz5kwXV169lJQUHnjgAZYvX87cuXMpKSkhOTmZ48ePn/PY7du3c+DAgcpHu3btXFDxuXXp0qVKXRs3bqxxX3f//REREWu47fDdfv360bt3b2bMmFG5rVOnTowePZqpU6eesf+jjz7KV199xdatWyu3jRs3jvXr17Ns2TKX1FwXhw4dIjIykpSUFAYPHlztPgsXLmTYsGEcPXqUxo0bu7bAc5g8eTJffPEFqamptdrf035/RETENdyyRaSoqIg1a9aQnJxcZXtycjJLly6t9phly5adsf+IESNYvXo1xcXFTqv1fOXl5QHQpEmTc+7bq1cvYmJiGD58OAsWLHB2abW2c+dOYmNjSUhI4OabbyYtLa3GfT3t90dERFzDLYNIbm4upaWlREVFVdkeFRVFdnZ2tcdkZ2dXu39JSQm5ublOq/V8GIbBxIkTueSSS+jatWuN+8XExPDaa68xc+ZMZs2aRYcOHRg+fDiLFi1yYbXV69evH++99x7ff/89r7/+OtnZ2SQlJXH48OFq9/ek3x8REXEdt15912azVfnZMIwztp1r/+q2W238+PFs2LCBJUuWnHW/Dh060KFDh8qfBwwYQGZmJs8//3yNt3NcZeTIkZWvu3XrxoABA2jTpg3vvvsuEydOrPYYT/n9ERER13HLFpGIiAh8fHzOaP3Iyck543/VFaKjo6vd39fXl6ZNmzqt1rp68MEH+eqrr1iwYAEtWrSo8/H9+/dn586dTqjswoSEhNCtW7caa/OU3x8REXEttwwi/v7+JCYmMnfu3Crb586dS1JSUrXHDBgw4Iz9f/jhB/r06YOfn5/Taq0twzAYP348s2bNYv78+SQkJJzXedatW0dMTEw9V3fhHA4HW7durbE2d//9ERERixhu6uOPPzb8/PyMN99809iyZYsxYcIEIyQkxEhPTzcMwzAee+wx4/bbb6/cPy0tzQgODjYeeeQRY8uWLcabb75p+Pn5GZ999plVH6GK++67zwgPDzcWLlxoHDhwoPJx4sSJyn1++Zn+9a9/GZ9//rmxY8cOY9OmTcZjjz1mAMbMmTOt+AhV/P73vzcWLlxopKWlGcuXLzeuuuoqIzQ01GN/f0RExBpuG0QMwzD+85//GK1atTL8/f2N3r17GykpKZXv3XnnncaQIUOq7L9w4UKjV69ehr+/vxEfH2/MmDHDxRXXDKj28fbbb1fu88vP9Oyzzxpt2rQxAgMDjYsuusi45JJLjNmzZ7u++GqMGTPGiImJMfz8/IzY2Fjj+uuvNzZv3lz5vqf9/oiIiDXcdh4RERER8X5u2UdEREREGgYFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjK/VBYiI1LeysjKysrIIDQ3FZrNZXY5Ig2MYBgUFBcTGxmK3n73NQ0FERLxOVlYWcXFxVpch0uBlZmbSokWLs+6jICIiXic0NBQw/xEMCwuzuBqRhic/P5+4uLjKv4tnoyAiIl6n4nZMWFiYgoiIhWpza1SdVUVERMQyCiIi4jSLFi3i6quvJjY2FpvNxhdffHHOY1JSUkhMTCQwMJDWrVvzyiuvOL9QEbGMgoiIOM3x48fp0aMHL7/8cq3237NnD6NGjWLQoEGsW7eOxx9/nIceeoiZM2c6uVIRsYr6iIiI04wcOZKRI0fWev9XXnmFli1bMm3aNAA6derE6tWref7557nhhhucVKXnO1VcSqGjBEdJGWGBvoQG+lldkkitKYiIiNtYtmwZycnJVbaNGDGCN998k+LiYvz8qv+CdTgcOByOyp/z8/OdWqfVCh0lzNt6kB+35rB5fx57Dh/HME6/3yjAl04xoQxoE8HlnaLo1iLcumJFzkFBRETcRnZ2NlFRUVW2RUVFUVJSQm5uLjExMdUeN3XqVKZMmeKKEi2VeeQEry7azaer9+EoKTvjfX8fO0WlZRQ6SliVfpRV6Ud5ad5OujUPZ2xSPKN7NcfHrgnexL0oiIiIW/nlcD+j/L/6ZxsGOGnSJCZOnFj5c8UcBt7iuKOEF+bu4N2l6ZSUmb8eCREhjOoWTb+EpnSKCaNpiD92u43jjhKyjp1kzd6jLN6Zy9ytB9m4P4/ff7qe1xen8cSVnRjUrpnFn0jkNAUREXEb0dHRZGdnV9mWk5ODr68vTZs2rfG4gIAAAgICnF2eJZbszOVPn60nK+8UAJe0jeCBYW3p37pJteEsJMCXdlGhtIsK5ea+LTlyvIiPV2Xwakoa27ILuP3NldzStyX/d2UnQgL0FSDW059CEXEbAwYM4Ouvv66y7YcffqBPnz419g/xVqVlBv+ev5MX5+3EMCCuSRB/vbYrQztE1uk8TUL8uX9oW27t25JpP+7k3WXpfLQyg2W7c3n9jj60izr3zJcizqThuyLiNIWFhaSmppKamgqYw3NTU1PJyMgAzFsqd9xxR+X+48aNY+/evUycOJGtW7fy1ltv8eabb/KHP/zBivItc7KolN+9v4ZpP5oh5Ja+cfwwYUidQ8jPNQ72Z/I1Xfjwnn7EhgeSfvgE109fyoLtOfVYuUjd2Qzj532tRUTqz8KFCxk2bNgZ2++8807eeecdxo4dS3p6OgsXLqx8LyUlhUceeYTNmzcTGxvLo48+yrhx4+p03fz8fMLDw8nLy/O4Kd6PnSjinndXs3rvUfx97Uy9rhs3JJ590bC6OnK8iHHvr2Fl+hHsNnj+xh5c37t+ryENW13+DiqIiIjX8dQgkneimFteX86WA/mEBfryxp0X0zehiVOuVVRSxmOzNjBr7X5sNnj2+u7cdLH3dPAVa9Xl76BuzYiIuIGCU8Xc8fZKthzIJ6KRP/8bN8BpIQTA39fO87/qwW39W2IY8KeZG/h83T6nXU+kJgoiIiIWKyop4973VrM+8xiNg/344J5+dIx2fkuO3W7jr9d2ZWxSPAB//HQDC9VnRFxMQURExEKGYTBp1kaWpx2hUYAv79/lmhBSwWaz8eRVnRndM5aSMoP7PljLxn15Lru+iIKIiIiFpi/czcy1+/Cx23j51l6WTMdut9v4x696MKhdBCeLS/nt+6s5VOA494Ei9UBBRETEIgu35/D8D9sBmHxNlwsannuh/H3t/OfXvWndLIQDeae4/8M1FFUzjbxIfVMQERGxwL6jJ5jwSSqGAbf2a8nt/VtZXRJhgX68fkcfQgN8WZV+lL9/t83qkqQBUBAREXGx4tIyHvjvOo6dKKZ7i3CevKqz1SVVatOsEf8a0xOAt37aw49bDlpbkHg9BRERERd78cedrM88RligL/+5tTeBfj5Wl1TFZZ2juGtgAgB/+Gw9B/JOWlyReDMFERERF1qVfoTpC3cBMPX67sQ1Cba4ouo9OrIDXZuHcexEMX/8dAOa+1KcRUFERMRFjjtKeOSTVMoMuL53c67sHmN1STUK8PXhpZt7EehnZ8muXD5YkWF1SeKlFERERFzkH3O2se/oSZo3DmLKNV2sLuecWjdrxJ9GdARg6rdb2Xv4uMUViTdSEBERcYFV6Ud4d9leAP5+QzdCA/0srqh2xibF0y+hCSeKSpk0a6Nu0Ui9UxAREXGyU8WlPPrZBgBu6tOCQe2aWVxR7dntNp77VQ8C/ews3X2YWWv3W12SeBkFERERJ3s1JY203OM0Cw3giSvdZ6hubbVsGszDw9sD8LfZWzhyvMjiisSbKIiIiDjR3sPH+U/5KJk/X9WZ8CDPuCXzS/cMSqBjdChHTxQz9dutVpcjXkRBRETESQzD4MkvN1NUUsbAtk252o1HyZyLn4+dZ67vBsCna/axNuOoxRWJt1AQERFxkh+35pCy4xB+Pjb+cm1XbDab1SVdkN4tL+JXiS0AmPzVZsrK1HFVLpyCiIiIExSVlPH07C0A3H1Ja9o0a2RxRfXj0Ss6Ehrgy4Z9efxvdabV5YgXUBAREXGCd5emk374BBGNAhh/aVury6k3zUIDePiydgA8/8N2Ck4VW1yReDoFERGRena40MFL83YC8KcRHWgU4GtxRfXrjgHxJESEkFtYxKspaVaXIx5OQUREpJ79e/4uChwldIkN44byPhXexN/XzmMjzRlXX1+cRtYxLYon509BRESkHqXnHueD5eYMqo+P6oSP3bM7qNYkuXMUfROa4Cgp4/nvt1tdjngwBRERkXr03A/bKSkzGNK+GQPbRlhdjtPYbDb+78pOAHyeup9t2fkWVySeSkFERKSebNh3jNkbDmCzUXnrwpt1b9GYK7vFYBioVUTOm4KIiEg9ea78y/i6ns3pFBNmcTWuMTG5PT52Gz9uzWHN3iNWlyMeSEFERKQerEg7zOKdufjabUy4rL3V5bhMm2aNuKmP2SH32TnbtTqv1JmCiIjIBTIMg3/+sAOAmy6Oo2XTYIsrcq2HhrfD39fOyj1HWLr7sNXliIdREBERp5s+fToJCQkEBgaSmJjI4sWLa9x34cKF2Gy2Mx7btm1zYcV1s3hnLivTj+Dva+dBL5q8rLZiwoO4tW9LAF6Yu0OtIlInCiIi4lSffPIJEyZM4IknnmDdunUMGjSIkSNHkpGRcdbjtm/fzoEDByof7dq1c1HFdWMYBtN+NFtDft2vJTHhQRZXZI37h7YhwNfOmr1HWbQz1+pyxIMoiIiIU73wwgvcfffd3HPPPXTq1Ilp06YRFxfHjBkzznpcZGQk0dHRlQ8fHx8XVVw3i3fmsjbjGAG+du4b0sbqciwTGRbI7f1bAWoVkbpREBERpykqKmLNmjUkJydX2Z6cnMzSpUvPemyvXr2IiYlh+PDhLFiw4Kz7OhwO8vPzqzxcwTAMXiyfyv3X/VoRGRbokuu6q98NaUOgn531mcfUKiK1piAiIk6Tm5tLaWkpUVFRVbZHRUWRnZ1d7TExMTG89tprzJw5k1mzZtGhQweGDx/OokWLarzO1KlTCQ8Pr3zExcXV6+eoyZJduazZe5QAXzvjhrR2yTXdWbPQAH7dz2wV+fe8nWoVkVrxrpWYRMQt2WxVpzk3DOOMbRU6dOhAhw4dKn8eMGAAmZmZPP/88wwePLjaYyZNmsTEiRMrf87Pz3dJGPn3/F0A3NK3ZYNvDanwu8GteX/5XlbvPcqytMMktfHe2WWlfqhFREScJiIiAh8fnzNaP3Jycs5oJTmb/v37s3PnzhrfDwgIICwsrMrD2ValH2HlniP4+dj4nVpDKkWGBXLzxWYIrFiBWORsFERExGn8/f1JTExk7ty5VbbPnTuXpKSkWp9n3bp1xMTE1Hd5F+Tl8taQXyW2aLAjZWoybkgb/HxsLE87wpq9R60uR9ycbs2IiFNNnDiR22+/nT59+jBgwABee+01MjIyGDduHGDeVtm/fz/vvfceANOmTSM+Pp4uXbpQVFTEBx98wMyZM5k5c6aVH6OKjfvySNlxCLvN/NKVqmIbB3Fdr+b8b/U+ZizcxRt3Xmx1SeLGFERExKnGjBnD4cOH+ctf/sKBAwfo2rUr3377La1amZ0aDxw4UGVOkaKiIv7whz+wf/9+goKC6NKlC7Nnz2bUqFFWfYQzzEgxW0Ou6RFLq6YhFlfjnn43pA2frtnHj1tz2J5dQIfoUKtLEjdlM9StWUS8TH5+PuHh4eTl5dV7f5E9uce59J8LMQz4fsJgfcGexf0fruHbjdmM7hnLtJt7WV2OuFBd/g6qj4iISB28tigNw4BLO0YqhJzD/UPN6e6/3nCAzCMnLK5G3JWCiIhILeXkn2Lmmn0A3DdUfUPOpWvzcAa1i6C0zODNJXusLkfclIKIiEgtvfVTOkWlZSS2uoiL45tYXY5HqOjM+8mqTI4eL7K4GnFHCiIiIrVQ6CjhwxV7AY2UqYukNk3pEhvGyeJS3l++1+pyxA0piIiI1MInqzIpOFVC62YhDO8YaXU5HsNms/G78uD2ztJ0ThWXWlyRuBsFERGRcyguLeOt8j4O9w5qjd1e/fT0Ur1RXaNpcVEQR44XMXPtPqvLETejICIicg7fbjzA/mMniWjkz3W9mltdjsfx9bFz18AEAN5cvIeyMs0aIacpiIiInIVhGLyx2GwNuWNAPIF+PhZX5JluujiO0EBf0nKPM39bjtXliBtREBEROYuVe46wcX8egX52buvfyupyPFajAF9u7dcSgNcWp1lcjbgTBRERkbN4o7xvyA29W9AkxN/iajzb2KR4fO02Vu45woZ9x6wuR9yEgoiISA325B7nx60HAbjrkgSLq/F8MeFBXN0jFkATnEklBRERkRq8/dMeDAOGd4ykTbNGVpfjFSo6rc7ecIDsvFMWVyPuQEFERKQaeSeK+XS1OdT0brWG1JtuLcLpG9+EkjKDd5elW12OuAEFERGRany8KoOTxaV0jA5lQJumVpfjVSpuc/13RQYnikosrkaspiAiIvILJaVlvLs0HTC/NG02TWBWny7vHEXLJsHknSxm1tr9VpcjFlMQERH5he83HyQr7xQRjfy5prxzpdQfH7uNO5PiAXPad8PQBGcNmYKIiMgvvLnEnOfi1/1aaQIzJ7mpTwsaBfiyK6eQxTtzrS5HLKQgIiLyM+szj7E24xh+PjZ+3b+l1eV4rdBAP36V2AKAt37SUN6GTEFERORn3invG3J191giQwOtLcbLjU2Kx2aDhdsPsftQodXliEUUREREyuXkn+KbDVkAjB0Yb20xDUB8RAjDO0YC8F55AJSGR0FERKTchysyKC41SGx1Ed1bNLa6nAbhN+UTnH22Zh/5p4otrkasoCAiIgI4Skr5cEUGYN4yENdIatOUdpGNOF5UWjmBnDQsCiIiIsC3Gw+QW+ggOiyQK7pGW11Og2Gz2Spvg727NJ3SMg3lbWgURESkwTMMg7d/Sgfg9gGt8PPRP42udF2v5oQH+ZFx5ATzt+VYXY64mP62iUiDty7zGBv25eHva+fmi+OsLqfBCfb3rfx1f1edVhscBRERafDeKW8NubZHLE0bBVhbTAN1W/9W2G2wZFcuOw8WWF2OuJCCiIg0aAfzT/HtxgMAldOOi+vFNQnmsk5RAFqVt4FREBERp5s+fToJCQkEBgaSmJjI4sWLz7p/SkoKiYmJBAYG0rp1a1555RWn1fbhigxKygwujr+Irs3DnXYdObeKTquz1u4n76SG8jYUCiIi4lSffPIJEyZM4IknnmDdunUMGjSIkSNHkpGRUe3+e/bsYdSoUQwaNIh169bx+OOP89BDDzFz5sx6r81RUsp/V+wFYGxSQr2fX+pmQOumdIgK5URRKZ+uzrS6HHERBRERcaoXXniBu+++m3vuuYdOnToxbdo04uLimDFjRrX7v/LKK7Rs2ZJp06bRqVMn7rnnHu666y6ef/75eq/NHLJbRHRYIMldour9/FI3NtvpVXnfX76XMg3ldTvOGF6tICIiTlNUVMSaNWtITk6usj05OZmlS5dWe8yyZcvO2H/EiBGsXr2a4uLqm+sdDgf5+flVHrVR0Un1tv4tNWTXTYzuFUtYoC97D59g4Q4N5XUnhmFw7X+WMPGTVA7mn6q38+pvnog4TW5uLqWlpURFVW1tiIqKIjs7u9pjsrOzq92/pKSE3Nzql4ufOnUq4eHhlY+4uHMPwd2eXcD68iG7t/TVKrvuItjfl5vLfz8q5nYR97Bs92E27c9nzuZsgvx96u28CiIi4nQ2m63Kz4ZhnLHtXPtXt73CpEmTyMvLq3xkZp67f0GH6FC+efAS/nZtVw3ZdTO392+FzQaLd+ZqVV43UrEy9Q29WxAW6Fdv51UQERGniYiIwMfH54zWj5ycnDNaPSpER0dXu7+vry9Nmzat9piAgADCwsKqPGqja/NwbtIEZm6nylBeTXDmFjKPnODHrQcBuDOpVb2eW0FERJzG39+fxMRE5s6dW2X73LlzSUpKqvaYAQMGnLH/Dz/8QJ8+ffDzq7//hYl7q1h4cKZW5XULHyzfS5kBl7SNoG1kaL2eW0FERJxq4sSJvPHGG7z11lts3bqVRx55hIyMDMaNGweYt1XuuOOOyv3HjRvH3r17mThxIlu3buWtt97izTff5A9/+INVH0Es8PNVeT/TqryWOllUyserzNudzpj0T0FERJxqzJgxTJs2jb/85S/07NmTRYsW8e2339Kqldm8e+DAgSpziiQkJPDtt9+ycOFCevbsyV//+ldeeuklbrjhBqs+gljg50N531uWrqG8Fvoi1ZxgLq5JEJd2jKz389uMil5gIiJeIj8/n/DwcPLy8mrdX0Tcz4miEvo9M4+CUyW8PfZihjnhS1DOzjAMrpi2mO0HC/i/Kztxz6DWtTquLn8H1SIiIiJuKdjflzF9zM7Eb/20x+JqGqZlaYfZfrCAID8fbuzjnI7dCiIiIuK27hgQXzmUd1eOhvK6WsWopRsSmxMe5JzO4goiIiLitlo2DWZ4R3Mo73taldel9h09wdwt5UN2B8Q77ToKIiIi4tbuKl+V9zMN5XWp95adHrLbLqp+h+z+nIKIiIi4tQFtmtI+qhEnikr53yqtyusKJ4pK+HilOZrtN+VB0FkURERExK3ZbDbGJiUA5v/SnbECrFQ1c+1+8k+VEN80mGEdnDtaSUFERETc3nW9zM6SGUdOMK98qnFxDsMweKd8lNKdSfHY7TWvC1UfFERERMTtBfn7VK6SrFV5nctcbPA4jQJ8+VViC6dfT0FEREQ8wh0DWuFjt7Es7TBbD+RbXY7Xqpiz5VeJLQitx1V2a6IgIiIiHiG2cRBXdIkG4K0lmuDMGXblFLBw+yFsNud3Uq2gICIiIh7jrkviAfhyfRa5hQ5ri/FCFbe9LusURaumIS65poKIiIh4jN4tL6JHi3CKSsr4YPleq8vxKsdOFDFzrbnS8d2XJLjsugoiIiLiMWw2G3eXL7z2wfK9nCoutbgi7/HflRmcKi6jc0wY/RKauOy6CiIiIuJRRnaNJiY8kNzCIr5an2V1OV6hqKSscl2Zuy9JwGZz7pDdn1MQERERj+LnY+fOpHjA7LRqGJrg7ELN3pjFwXwHkaEBXN0j1qXXVhARERGPc8vFLQn292FbdgFLduVaXY5HMwyDNxafnsDM39e10UBBREREPE54sB839YkD4PXFGsp7IZanHWFzVj6BfnZuLZ80zpUURERExCPdfUkCdhss2nGI7dkFVpfjsV5fnAbADb1bcFGIv8uvryAiIiIeKa5JMFd0NSc4e6P8y1TqZufBAuZvy8Fmg3vKRyO5moKIiIh4rIovzy9TsziYf8riajxPRWtIcucoEiJcM4HZLymIiIiIx+rd8iIujr+IotIyLYZXRzn5p/hinTn8+beDrWkNAQURERHxcL8b3AaAD5fvpeBUscXVeI63l6ZTVFpGYquLSGzlugnMfklBREREPNqlHSNpG9mIAkcJH63MsLocj1BwqrhyinwrW0NAQURERDyc3W7jt+V9Rd5csgdHiaZ9P5f/rsig4FQJbZqFcHmnKEtrURARERGPd22vWKLCAjiY7+CLdfutLsetOUpKeXOJOffKuCFtsNtdN517dRRERETE4wX4+nDPJWaryCspaZSWadr3mny+dj85BQ5iwgO5tmdzq8tREBEREe9wa7+WhAf5sSf3ON9tOmB1OW6ppLSMGSm7AXNCOFdP514d6ysQEa919OhRbr/9dsLDwwkPD+f222/n2LFjZz1m7Nix2Gy2Ko/+/fu7pmDxaCEBvowtXwxv+oLdWgyvGrM3HmDv4RNcFOzHrf1cP517dRRERMRpbr31VlJTU5kzZw5z5swhNTWV22+//ZzHXXHFFRw4cKDy8e2337qgWvEGY5PiCfb3YcuBfBZsz7G6HLdSVmYwfYHZGnLXwASC/X0trsjkHlWIiNfZunUrc+bMYfny5fTr1w+A119/nQEDBrB9+3Y6dOhQ47EBAQFER0e7qlTxIheF+HNb/1a8tiiNl+btYliHSGw2aztjuosftx5k+8ECQgN8uaO85cgdqEVERJxi2bJlhIeHV4YQgP79+xMeHs7SpUvPeuzChQuJjIykffv23HvvveTknP1/tg6Hg/z8/CoPabjuGZRAgK+d1MxjLNmVa3U5bsEwDP49fxcAtw9oRXiQn8UVnaYgIiJOkZ2dTWRk5BnbIyMjyc7OrvG4kSNH8uGHHzJ//nz++c9/smrVKi699FIcDkeNx0ydOrWyH0p4eDhxcXH18hnEM0WGBlb2f/j3vF0WV+Me5m/LYeP+PIL9fbj7kgSry6lCQURE6mTy5MlndCb95WP16tUA1TaJG4Zx1qbyMWPGcOWVV9K1a1euvvpqvvvuO3bs2MHs2bNrPGbSpEnk5eVVPjIzMy/8g4pH+93gNvj72FmZfoSlDbxVxDAMXpy3EzBbQ5o2CrC4oqrUR0RE6mT8+PHcfPPNZ90nPj6eDRs2cPDgwTPeO3ToEFFRtZ/JMSYmhlatWrFz584a9wkICCAgwL3+cRVrRYcHckvfON5dtpd//biDAW2aNti+Igu257BhXx5Bfj6VM9C6EwUREamTiIgIIiIizrnfgAEDyMvLY+XKlfTt2xeAFStWkJeXR1JSUq2vd/jwYTIzM4mJiTnvmqVhun9YWz5alcmq9KMs2ZXLoHbNrC7J5QzDYNqPZoi/I8n9WkNAt2ZExEk6derEFVdcwb333svy5ctZvnw59957L1dddVWVETMdO3bk888/B6CwsJA//OEPLFu2jPT0dBYuXMjVV19NREQE1113nVUfRTxUVFggt/VrBcALc3c0yHlFvt98kA378gjxd8/WEFAQEREn+vDDD+nWrRvJyckkJyfTvXt33n///Sr7bN++nby8PAB8fHzYuHEj1157Le3bt+fOO++kffv2LFu2jNDQUCs+gni4cUNbE+hnZ13GMeZva1jzipSWGbwwdzsAd12S4JatIaBbMyLiRE2aNOGDDz446z4//19qUFAQ33//vbPLkgYkMjSQO5PieTUljee+386wDpGWL/LmKl+vz2LHwULCAn25x01bQ0AtIiIi4uXuG9KG0EBftmUX8NX6LKvLcYmikjJemLsDgN8NaeNW84b8koKIiIh4tcbB/owb0gaAf87dTlFJmcUVOd+HK/aSceQEzUID+M3AeKvLOSsFERER8Xq/GRhPs9AAMo+c5MMVe60ux6kKThVXzqI64bJ2brOmTE0URERExOsF+/sy4bJ2ALw4byd5J4otrsh5Xk1J48jxIlo3C2FMH/efZVhBREREGoQxfeJoF9mIYyeKeXlBzRPkebL9x07y+uI0AP40oiO+Pu7/Ne/+FYqIiNQDXx87j1/ZCYB3l+5l7+HjFldU/579bhuOkjL6JjRhRJfaz2BsJQURERFpMIa2b8agdhEUlZbxt9lbrS6nXq3Ze4Sv1mdhs8GTV3X2mCntFURERKTBsNlsPHlVZ3ztNuZuOUjKjkNWl1QvSssMpny9BTBvQXVtHm5xRbWnICIiIg1Ku6hQ7kyKB2DKV5u9YjjvRysz2LAvj9AAX36f3OHcB7gRBREREWlwHr6sHRGNAkjLPV7ZudNT5RY6+MecbQD8Prk9zULdcyr3miiIiIhIgxMW6McTV3YE4KV5Oz264+rUb7eRf6qELrFh3Na/ldXl1JmCiIiINEijezZnYNumOErKeOLzTR65Ou/inYeYuXYfNhv8dXRXjxiu+0ueV7GIiEg9sNlsPD26GwG+dpbsymXm2v1Wl1Qnxx0lPDZzIwB39G9F75YXWVzR+VEQERGRBis+IoSHy2dcnfL1Zg7knbS4otp77vvt7D92kuaNg/jTFR2tLue8KYiIiEiD9ttBrekR15iCUyU8OnOjR9yiWborl3eXpQMw9fpuhAS493oyZ6MgIiIiDZqvj51/3tiDAF87i3Yc4sMVGVaXdFZ5J4qZ+L/1GAbc0rclg9s3s7qkC6IgIiIiDV7byEaVtzf++s0WtmXnW1xR9QzD4PEvNpKdf4qEiBD+fFUnq0u6YAoiIiIiwG+S4hnaoRmOkjLG/3cdJ4pKrC7pDB+uyGD2hgP42m1MG9OTYH/PvSVTQUFEREQEsNtt/PPGHkSGBrArp9DthvSmZh7jL+XTuP9xRAd6xDW2tqB6oiAiIiJSrmmjAF68uRc+dhufr9vPm0v2WF0SYM6e+sCHaykqLSO5cxS/Hdza6pLqjYKIiIjIzwxo05QnRpl9L575diuLd1q7MN6p4lJ++95q9h87SaumwTx3Yw+PWVm3NhREREREfuE3A+O5oXcLygy474O1bNqfZ0kdZWUGf/xsA2szjhEW6Mubd15MeJCfJbU4i4KIiIjIL9hsNp6+riv9Wzeh0FHC2LdXuXw9GsMwmPL1Zr5en4Wv3cYrtyXSNrKRS2twBQURERGRagT6+fDaHX3oFBNGbqGDW19fQcbhEy65tmEY/P27bby7bC82Gzx3Y3eS2ka45NqupiAiIiJSg7BAP979zcW0jghh/7GT3PTqMtIOFTr1mmVlBlO+3sKri9IAeHp0N67r1cKp17SSgoiIiMhZRIYF8vFv+9MushHZ+af41SvLWLnniFOu5Sgp5eFPUnlnaToAU67pwq39WjrlWu5CQUREROQcIsMC+ei3/enWPJwjx4v49RvL+WhlRr3OM5J55AS/mrGMr9dn4edj48Wbe3JnUny9nd9dKYiIiNM8/fTTJCUlERwcTOPGjWt1jGEYTJ48mdjYWIKCghg6dCibN292bqEitRDRKID//W4AV3aLobjUYNKsjYz7YA2HCx0XdF7DMPh83T6u+vcSNu7Po3GwH+/8pi/X9mxeT5W7NwUREXGaoqIibrzxRu67775aH/OPf/yDF154gZdffplVq1YRHR3N5ZdfTkFBgRMrFamdIH8f/n1LLx4b2RE/Hxvfbz7I8BdSeGNxGo6S0jqfb3NWHre9uYJHPllP3sliesQ1ZvZDgxjopR1Tq2Mz3Gn+WhHxSu+88w4TJkzg2LFjZ93PMAxiY2OZMGECjz76KAAOh4OoqCieffZZfve739Xqevn5+YSHh5OXl0dYWNiFli9Src1Zefz+f+vZlm2G5JjwQG7p25Ib+7QgJjyoxuMcJaUs3pHLf1dmMH9bDgABvnYeGt6Oewe1xt/X89sI6vJ30PNXyxERr7Fnzx6ys7NJTk6u3BYQEMCQIUNYunRprYOIiCt0iQ3nmwcv4bM1+3hh7g4O5J3ihbk7eGHuDtpGNiKx5UU0vyiIxsF+nCou5XBhEVsO5JOacYwCh7mgnt0GV3aP5feXtyc+IsTiT2QNBRERcRvZ2dkAREVFVdkeFRXF3r17azzO4XDgcJy+T5+f755LuIv38fWxc3Pflozu1Zw5m7L5cMVeVu89yq6cQnbl1DzMNyosgFHdYrhjQDwJDTSAVFAQEZE6mTx5MlOmTDnrPqtWraJPnz7nfY1frqNhGMZZ19aYOnXqOWsScaZAPx9G92rO6F7NOXaiiOVph9l6oIDsvFPknyom0M+HsEBfOkSH0bV5GF1jw7HbvWe9mAuhICIidTJ+/Hhuvvnms+4THx9/XueOjo4GzJaRmJiYyu05OTlntJL83KRJk5g4cWLlz/n5+cTFxZ1XDSIXqnGwP1d0jeGKrjHn3lkURESkbiIiIoiIcE6P/oSEBKKjo5k7dy69evUCzJE3KSkpPPvsszUeFxAQQEBAgFNqEhHn8vyuuSLitjIyMkhNTSUjI4PS0lJSU1NJTU2lsPD0vfOOHTvy+eefA+YtmQkTJvDMM8/w+eefs2nTJsaOHUtwcDC33nqrVR9DRJxILSIi4jRPPvkk7777buXPFa0cCxYsYOjQoQBs376dvLzTS6z/6U9/4uTJk9x///0cPXqUfv368cMPPxAaGurS2kXENTSPiIh4Hc0jImItzSMiIg1axf+vNIxXxBoVf/dq09ahICIiXqdiOniNnBGxVkFBAeHh4WfdR7dmRMTrlJWVkZWVRWho6FnnH6kY5puZmdlgb+Ho10C/BhXq89fBMAwKCgqIjY3Fbj/7uBi1iIiI17Hb7bRo0aLW+4eFhTXoLyDQrwHo16BCff06nKslpIKG74qIiIhlFERERETEMgoiItJgBQQE8NRTTzXoWVn1a6BfgwpW/Tqos6qIiIhYRi0iIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIN0vTp00lISCAwMJDExEQWL15sdUkuNXXqVC6++GJCQ0OJjIxk9OjRbN++3eqyLDV16lRsNhsTJkywuhSX2r9/P7fddhtNmzYlODiYnj17smbNGpddX0FERBqcTz75hAkTJvDEE0+wbt06Bg0axMiRI8nIyLC6NJdJSUnhgQceYPny5cydO5eSkhKSk5M5fvy41aVZYtWqVbz22mt0797d6lJc6ujRowwcOBA/Pz++++47tmzZwj//+U8aN27ssho0fFdEGpx+/frRu3dvZsyYUbmtU6dOjB49mqlTp1pYmXUOHTpEZGQkKSkpDB482OpyXKqwsJDevXszffp0/va3v9GzZ0+mTZtmdVku8dhjj/HTTz9Z2iKoFhERaVCKiopYs2YNycnJVbYnJyezdOlSi6qyXl5eHgBNmjSxuBLXe+CBB7jyyiu57LLLrC7F5b766iv69OnDjTfeSGRkJL169eL11193aQ0KIiLSoOTm5lJaWkpUVFSV7VFRUWRnZ1tUlbUMw2DixIlccskldO3a1epyXOrjjz9m7dq1DbYlLC0tjRkzZtCuXTu+//57xo0bx0MPPcR7773nshq0+q6INEg2m63Kz4ZhnLGtoRg/fjwbNmxgyZIlVpfiUpmZmTz88MP88MMPBAYGWl2OJcrKyujTpw/PPPMMAL169WLz5s3MmDGDO+64wyU1qEVERBqUiIgIfHx8zmj9yMnJOaOVpCF48MEH+eqrr1iwYAEtWrSwuhyXWrNmDTk5OSQmJuLr64uvry8pKSm89NJL+Pr6UlpaanWJThcTE0Pnzp2rbOvUqZNLO24riIhIg+Lv709iYiJz586tsn3u3LkkJSVZVJXrGYbB+PHjmTVrFvPnzychIcHqklxu+PDhbNy4kdTU1MpHnz59+PWvf01qaio+Pj5Wl+h0AwcOPGPY9o4dO2jVqpXLatCtGRFpcCZOnMjtt99Onz59GDBgAK+99hoZGRmMGzfO6tJc5oEHHuC///0vX375JaGhoZUtROHh4QQFBVlcnWuEhoae0ScmJCSEpk2bNpi+Mo888ghJSUk888wz3HTTTaxcuZLXXnuN1157zWU1aPiuiDRI06dP5x//+AcHDhyga9eu/Otf/2pQw1Zr6g/z9ttvM3bsWNcW40aGDh3aoIbvAnzzzTdMmjSJnTt3kpCQwMSJE7n33ntddn0FEREREbGM+oiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERscz/AwcOGcnVutO1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#不需要显示的构造一个画板对象，如果没有画板，matplotlib会自动帮我们构造一个画板\n",
    "#figure =plt.figure\n",
    "\n",
    "axes1 = plt.subplot(2,3,1)\n",
    "\n",
    "# 绘制线型图的方法\n",
    "# plt绘图，在没有指定画布的时候，会就近选择离自已最近的画布去进行绘制\n",
    "plt.plot(x, y)\n",
    "\n",
    "axes2 = plt.subplot(2,2,4)\n",
    "\n",
    "# 指定一个画布绘制图像(面向对象风格)\n",
    "axes2.plot(x, y)\n",
    "\n",
    "axes1.plot(x, 2*y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15079ef0-5e39-44ce-a47d-1850fb5dd223",
   "metadata": {},
   "source": [
    "# Matplotlib\n",
    "## 网格"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67d0d5a4-2923-47d4-a1ee-403d8f3fbc5b",
   "metadata": {},
   "source": [
    "面向过程\n",
    "plt.grid()\n",
    "\n",
    "面向对象\n",
    "axes.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "f185945b-89a8-4ff1-adba-bcd26cfcd15b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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+WTcf//9sX379jj//POHa3ljykedxalTp+KWW26JdevWxaWXXnquljem5PN7cfr06SgqKopt27bFlVdeGddff32sX78+tm7d6qzLEMhnFocOHYoVK1bEN7/5zThw4ED89Kc/jTfeeMPHzoyQoXjsHvH/LZs6dWoUFxf3q+X29vZ+ZXbGBRdcMOD+JSUlUVFRMWxrHe0GM4sztm/fHsuWLYunnnoqrr322uFc5piQ7yyOHTsW+/fvj+bm5vja174WEe8/eGZZFiUlJbF79+645pprzsnaR5vB/F5MmzYtLrzwwpg8eXLvtssvvzyyLIu33norLrnkkmFd82g1mFk0NjbG/Pnz4957742IiM9+9rMxceLEqK2tjQcffNAZ+nNoqB67R/yMy/jx46OqqipyuVyf7blcLmpqagY8Zt68ef323717d1RXV0dpaemwrXW0G8wsIt4/03L77bfHE0884XnjIZLvLCZNmhQ///nP4+DBg72Xurq6+PSnPx0HDx6Mq6666lwtfdQZzO/F/Pnz4ze/+U28++67vdtee+21GDduXMyYMWNY1zuaDWYWx48fj3Hj+j7UFRcXR8T//799zo0he+zO66W8w+TM29s2b96cHTp0KFu5cmU2ceLE7Je//GWWZVm2evXq7NZbb+3d/8xbqlatWpUdOnQo27x5s7dDD5F8Z/HEE09kJSUl2SOPPJK1trb2Xt5+++2R+hJGjXxn8Ye8q2jo5DuLY8eOZTNmzMi+8pWvZK+++mq2d+/e7JJLLsmWL18+Ul/CqJHvLB5//PGspKQk27hxY/b6669nL730UlZdXZ1deeWVI/UljBrHjh3Lmpubs+bm5iwisvXr12fNzc29b00frsfuggiXLMuyRx55JJs1a1Y2fvz47M/+7M+yvXv39v7bbbfdll199dV99n/hhReyz3/+89n48eOziy++ONu0adM5XvHolc8srr766iwi+l1uu+22c7/wUSjf34v/S7gMrXxncfjw4ezaa6/NzjvvvGzGjBlZQ0NDdvz48XO86tEp31k8/PDD2Wc+85nsvPPOy6ZNm5b91V/9VfbWW2+d41WPPnv27PnA//4P12N3UZY5VwYApGHEX+MCAPBRCRcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEjG/wNID7Ek6MQsGAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plt.subplot(111)\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "2264e2b2-579e-4387-b7aa-f2c11f86f0ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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K3mDmVvqvTJ/4okn9M4773wt7yk6nTs2NlYfffSRamtr+4+cnBzdfffdqq2t1dy5c4er9RsSzPd73rx5Onv2rC5cuNBfO378uMLDwzV58uQh7TdUgpn74sWLg94RHhERISm0/1zbrSRkmeboR6hDpO+xppKSElNXV2fWrl1rRo8ebf75z38aY4zZsGGDWbZsWf/6vkd81q1bZ+rq6kxJScnX+rHF6537nXfeMS6Xy2zfvt00Njb2H+fPn79ZIwTF6dxX+ro+5eJ07ra2NjN58mTzox/9yHzyySfm4MGDZtq0aWblypU3a4SgOJ37zTffNC6XyxQVFZnPPvvMHD582KSmppo5c+bcrBEca2trMzU1NaampsZIMlu2bDE1NTX9j2oOVabdEoFujDHbt283SUlJJioqytx3333m4MGD/b+3fPly88ADD/it/+Mf/2i++93vmqioKHPnnXea4uLiYe44NJzM/cADDxhJg47ly5cPf+M3yOn3+//6uga6Mc7nrq+vN/PnzzejRo0ykydPNrm5uebixYvD3PWNczr3tm3bzMyZM82oUaNMQkKC+clPfmJOnz49zF0H7w9/+MM1/786VJnG63MBwBI3/R46ACA0CHQAsASBDgCWINABwBIEOgBYgkAHAEsQ6ABgCQIdACxBoAOAJQh0ALAEgQ4AliDQAcAS/x8uYCiUtBNKnAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4, 8))\n",
    "axes1 = plt.subplot(2,1,1)\n",
    "#plt.grid()\n",
    "#axes1.grid()\n",
    "\n",
    "axes2 = plt.subplot(2,1,2)\n",
    "#plt.grid()\n",
    "\n",
    "# 网格还可以进行属性的配置\n",
    "axes2.grid(axis='x') # 只保留x轴的网格线\n",
    "axes1.grid(axis='y', color='red', ls='--') # 只保留y轴的网格线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8fe852f9-b248-40b2-8872-538a8931dbb6",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "d4b9cc57-6b31-4016-82d0-c580ac83e26f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 6.283185307179586)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.min(), x.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "0ab16f03-93d1-47ea-9fd6-25e371b987ab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.9998741276738751, 0.9998741276738751)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.min(), y.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "17640fce-a81d-42e8-bfcc-92ccd43e6def",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x200f885b020>]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 默认情况是画布刻度的边界是由绘图的数据决定的\n",
    "# y -1~1\n",
    "# x 0~2π\n",
    "plt.plot(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "531139a3-c325-4cfb-b495-1d111b7b382d",
   "metadata": {},
   "source": [
    "## 坐标刻度界限设置\n",
    "plt.xlim(), plt.ylim()\n",
    "\n",
    "axes.set_xlim(), axes.set_ylim()\n",
    "\n",
    "axes.axis()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "cd168929-cefa-453e-b9ea-e8c060a2df31",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 9.283185307179586, -1.0, 1.0)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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t956C56ennjssccAmJqmZs2ahRdeeAEBAQHw9/fHiy++iD59+mDs2LG3VJdSqcRf//rXFrutyL7wd+U4+LtyHPxdOQ7+rm6fVaeJz5w5E59//nmz89u3b8fIkSNNBQgCPvvsM8ycOROAaSzNG2+8gY8//hgVFRUYMmQIPvjgAyQkJFheX1dXhz/96U/46quvcPXqVYwZMwZLlixBRESEtR6FiIiIHIhLbtVAREREzo2bbRIREZHTYcAhIiIip8OAQ0RERE6HAYeIiIicjksGnCVLliAqKgoqlQpJSUnYvXu31CXRDRYuXIhBgwbB29sbwcHBmDJlCnJycqQui25i4cKFluUeyP5cunQJTzzxBAICAuDp6Yn+/fvj8OHDUpdFN9Dr9fjzn/+MqKgoeHh4oHv37liwYAGMRqPUpTkUlws4q1evxty5c/Hqq68iMzMTw4cPx4QJE5Cfny91aXSdnTt34qmnnsK+ffuQnp4OvV6P1NRU1NTUSF0ateLgwYNYunQp+vbtK3Up1IKKigoMGzYM7u7u2LhxI06ePIl//etf8PX1lbo0usGiRYvw0Ucf4f3330d2djbefvtt/OMf/8B7770ndWkOxeWmiQ8ZMgSJiYn48MMPLediY2MxZcoULFy4UMLKqC0lJSUIDg7Gzp07MWLECKnLoRtUV1cjMTERS5Yswd///nf0798fixcvlrosus7LL7+MX375hS3WDmDSpEkICQnBsmXLLOceeugheHp64osvvpCwMsfiUi049fX1OHz4MFJTU5ucT01Nxd69eyWqim6FRqMBAPj7+0tcCbXkqaeewr333nvLq4mT7a1fvx4DBw7EI488guDgYAwYMACffPKJ1GVRC+666y5s3boVp0+fBgAcPXoUe/bswcSJEyWuzLFYdasGe1NaWgqDwWDZuNMsJCQERUVFElVFNyOKIubNm4e77rqryYrWZB++/vprHDlyBAcPHpS6FGrDuXPn8OGHH2LevHl45ZVXcODAATz77LNQKpWYMWOG1OXRdV566SVoNBrExMRALpfDYDDgzTffxKOPPip1aQ7FpQKOmSAITb4WRbHZObIfTz/9NI4dO4Y9e/ZIXQrdoKCgAM899xw2b94MlUoldTnUBqPRiIEDB+Ktt94CAAwYMAAnTpzAhx9+yIBjZ1avXo0vv/wSX331FeLj45GVlYW5c+eic+fO+M1vfiN1eQ7DpQJOYGAg5HJ5s9aa4uLiZq06ZB+eeeYZrF+/Hrt27UJ4eLjU5dANDh8+jOLiYiQlJVnOGQwG7Nq1C++//z50Oh3kcrmEFZJZWFgY4uLimpyLjY3FmjVrJKqIWvOnP/0JL7/8MqZPnw4A6NOnDy5cuICFCxcy4LSDS43BUSgUSEpKQnp6epPz6enpSElJkagqaokoinj66aexdu1abNu2DVFRUVKXRC0YM2YMfv31V2RlZVmOgQMH4vHHH0dWVhbDjR0ZNmxYs6UWTp8+jcjISIkqotbU1tZCJmv69iyXyzlNvJ1cqgUHAObNm4e0tDQMHDgQycnJWLp0KfLz8zFnzhypS6PrPPXUU/jqq6/w/fffw9vb29Lqplar4eHhIXF1ZObt7d1sXJSXlxcCAgI4XsrOPP/880hJScFbb72FqVOn4sCBA1i6dCmWLl0qdWl0g/vuuw9vvvkmunbtivj4eGRmZuKdd97B7373O6lLcyyiC/rggw/EyMhIUaFQiImJieLOnTulLoluAKDF47PPPpO6NLqJu+++W3zuueekLoNa8MMPP4gJCQmiUqkUY2JixKVLl0pdErVAq9WKzz33nNi1a1dRpVKJ3bt3F1999VVRp9NJXZpDcbl1cIiIiMj5udQYHCIiInINDDhERETkdBhwiIiIyOkw4BAREZHTYcAhIiIip8OAQ0RERE6HAYeIiIicDgMOEREROR0GHCIiInI6DDhERETkdBhwiIiIyOn8f/e2UNFBb0U4AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# axis设置\n",
    "axes = plt.subplot(111)\n",
    "axes.plot(x,y)\n",
    "\n",
    "# [xmin, xmax, ymin, ymax]\n",
    "axes.axis([0, 2*np.pi+3, -1, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "8942816d-6b30-422a-a919-7ad8267197d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<Figure size 640x480 with 1 Axes>, <Axes: >)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "fig, ax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "567e4bf3-3ad1-443b-b90c-4426cbaac515",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<Figure size 640x480 with 6 Axes>,\n",
       " array([[<Axes: >, <Axes: >, <Axes: >],\n",
       "        [<Axes: >, <Axes: >, <Axes: >]], dtype=object))"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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883XvvY1c+rUqSkfjx8gpMJ4jgoLC8kurEJ2Yat05MhjTOZfN4xEIvL7/XIchxvGkLTZyBHZRSqQXdgqHTniWUUAAMAaFBcAAGANigsAALAGxQUAAFiD4gIAAKxBcQEAANaguAAAAGtQXAAAgDUoLgAAwBoUFwAAYA2KCwAAsAbFBQAAWIPiAgAArEFxAQAA1qC4AAAAa1BcAACANSguAADAGhQXAABgDYoLAACwBsUFAABYg+ICAACsQXEBAADWSKq4tLW1qbi4WLm5uQoGgzp8+PAV54+MjKilpUVFRUXy+Xy64YYb1NHRkdSCgelaunQp2YWVyC4gZbvdobOzU/X19Wpra9PKlSv1y1/+UmvWrFFfX58KCwsT7nPffffprbfeUnt7uz7zmc9oaGhI58+fn/biATe6urokSY2NjVq9ejXZhTXILnAJ41JFRYWpq6uLGSspKTFNTU0J5//+9783fr/fvP32224PFeU4jpFkHMdJ+nsAwWAwLkdkFzYgu7BVOnLk6q2i0dFR9fT0qKamJma8pqZGR48eTbjPiy++qPLycj3++OO67rrrdNNNN6mxsVH//e9/JzzOyMiIIpFIzAZMx+joqHp7e+PGyS4yHdkFYrl6q2h4eFhjY2MKBAIx44FAQIODgwn3eeONN3TkyBHl5uZqz549Gh4e1re//W298847E77f2traqs2bN7tZGnBF49m9HNlFpiO7QKykbs71eDwxr40xcWPjLly4II/Ho+3bt6uiokJr167Vk08+qf/7v/+bsP03NzfLcZzoNjAwkMwygUmRXdiK7OLjytUVl/nz5ysrKyuu5Q8NDcVdhRmXn5+v6667Tn6/Pzp28803yxijU6dO6cYbb4zbx+fzyefzuVkacEXj2b38N1eyi0xHdoFYrq64eL1eBYNBhUKhmPFQKKTKysqE+6xcuVL//ve/dfbs2ejYq6++qjlz5mjRokVJLBlwz+v1qrS0NG6c7CLTkV3gMm7v5t25c6fJyckx7e3tpq+vz9TX15u5c+eakydPGmOMaWpqMuvXr4/OP3PmjFm0aJG59957zSuvvGK6u7vNjTfeaB588MEpH5O725EKHR0dRpLZsmUL2YVVyC5slY4cuS4uxhizdetWU1RUZLxerykrKzPd3d3Rr9XW1prq6uqY+cePHzerV682V111lVm0aJFpaGgw77//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",
      "text/plain": [
       "<Figure size 640x480 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(nrows=2, ncols=3)\n",
    "fig, axs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88117230-051f-450e-9ced-5b3b30cde507",
   "metadata": {},
   "source": [
    "axes 坐标系\n",
    "\n",
    "axis：轴，x轴，y轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dc716032-6466-4eff-836d-b4879dc71d75",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "2b9ee8e9-84ce-4d77-933c-6d7bbde39cf7",
   "metadata": {},
   "source": [
    "# 2 Numpy初阶\n",
    "## (1)NumPy创建数组的三种方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "d1826120-f495-4b7d-84ff-5251ff718d03",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc9cdfb9-f4be-42a9-97ef-f69e79f4c011",
   "metadata": {},
   "source": [
    "### (1)使用np.array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "481ef4f9-3a2a-41e5-988d-6055c446e9f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建一维数组\n",
    "v = np.array([1,2,3,4])\n",
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "19fc6600-91bb-4490-ba8b-8c40dacba55c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2],\n",
       "       [3, 4]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建二维数组\n",
    "m = np.array([[1,2],[3,4]])\n",
    "m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3d197ed0-fbba-4032-9652-0bb50b6a3e55",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "fe75d97c-1044-4525-9ba1-682b23dad48f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(m)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49181be2-82bf-4ed1-93f5-a7cd3b6d029b",
   "metadata": {},
   "source": [
    "### (2)使用arange"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "81ad26dd-2b51-44c9-b421-5cf9ae024926",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 不包括右端点\n",
    "np.arange(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "8c1af5da-c641-4c80-910c-a4f349dd9d89",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 10,  20,  30,  40,  50,  60,  70,  80,  90, 100])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 可以设置步长\n",
    "np.arange(10, 110, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d208b6d4-1b38-4a86-9dbf-3cf1834b82ff",
   "metadata": {},
   "source": [
    "### (3)使用linspace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3a1a70c1-f643-4809-9c53-1a139493ef98",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建从1到10这个区间的10个点，包括右端点\n",
    "np.linspace(1,10,10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7f0d46f6-a586-499f-b238-c679bc42f3f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.        ,  1.47368421,  1.94736842,  2.42105263,  2.89473684,\n",
       "        3.36842105,  3.84210526,  4.31578947,  4.78947368,  5.26315789,\n",
       "        5.73684211,  6.21052632,  6.68421053,  7.15789474,  7.63157895,\n",
       "        8.10526316,  8.57894737,  9.05263158,  9.52631579, 10.        ])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linspace(1,10,20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9dacb874-6ec4-46c1-86e1-29716f72ad8f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "b8017a74-5990-41e6-af48-c334f101a55f",
   "metadata": {},
   "source": [
    "## (2)NumPy数组常用属性\n",
    "### shape属性和reshape改变数组形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "ea5b58ce-1b4b-4cb8-9e8b-2ec35b544607",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.        ,  0.52631579,  1.05263158,  1.57894737,  2.10526316,\n",
       "        2.63157895,  3.15789474,  3.68421053,  4.21052632,  4.73684211,\n",
       "        5.26315789,  5.78947368,  6.31578947,  6.84210526,  7.36842105,\n",
       "        7.89473684,  8.42105263,  8.94736842,  9.47368421, 10.        ])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shape 返回数组的形状，是一个元组对象\n",
    "v = np.linspace(0,10,20)\n",
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "127fa0c2-4cf2-46c6-9250-50f48112a75a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20,)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "918fbd73-92d1-4082-96be-757b73237c61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4, 5)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 改变数组的形状为4行5列，参数使用元组的形式传\n",
    "v2 = v.reshape((4,5))\n",
    "v2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "09e2c5b9-99d2-45d9-8632-1185fcab66df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 5, 2)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#还可以创建三维数组\n",
    "v3 = v.reshape((2,5,2))\n",
    "v3.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13983615-3799-46ac-b87d-df0e49f41abc",
   "metadata": {},
   "source": [
    "### size返回数组元素个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "6063b8b7-db66-4e6a-8d0e-562006c1ab16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v2.size"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4d39841-0d24-4fc9-8917-4a8dc46791a0",
   "metadata": {},
   "source": [
    "### dtype返回数组类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "c5e09c32-0e65-4e82-a3dd-d8a49879e2da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v2.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "432dd494-779f-4c49-8c6d-c4ce32164fdf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int64')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp = np.array([1,2,3])\n",
    "tmp.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "6d72c908-68c8-48b1-b172-63cf1c786967",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1., 2., 3.])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 我们可以在创建数组的同时设置元素的数据类型\n",
    "tmp2 = np.array([1,2,3], dtype='float64')\n",
    "tmp2  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d37d4550-b554-4e93-a7e6-f87c0b8ebd4b",
   "metadata": {},
   "source": [
    "## (3)思考题 \n",
    "### 1.创建一个所有元素都为true的二维数组"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72e4a689-7958-4578-ad47-0a3838a4ae52",
   "metadata": {},
   "source": [
    "#### 法1：np.ones数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "698f15dc-89e3-473a-aebc-37935b6e2a48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1.]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.ones((3,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "6b7a2c79-d362-4476-8a04-df766c9cc0b3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True,  True,  True,  True,  True],\n",
       "       [ True,  True,  True,  True,  True],\n",
       "       [ True,  True,  True,  True,  True]])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.ones((3,5)) == 1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb65d528-45e1-435c-9a37-92989c4b9bec",
   "metadata": {},
   "source": [
    "#### 法2：np.zeros数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "99253a86-85ab-41de-8278-f05ece82ced0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0.]])"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((3,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "d83cecde-ea31-4c6a-8dd4-8d1acf3e31a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True,  True,  True,  True,  True],\n",
       "       [ True,  True,  True,  True,  True],\n",
       "       [ True,  True,  True,  True,  True]])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((3,5)) == 0"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dedab9d9-2a34-45ce-b9a8-c3b6ee5eb14e",
   "metadata": {},
   "source": [
    "### 2.一维数组转二维"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "18808de1-eb41-46ca-879a-28fea9191f6c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,\n",
       "       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n",
       "       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n",
       "       51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n",
       "       68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n",
       "       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na = np.arange(100)\n",
    "na"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "0c2f9b62-25e2-40b8-a068-f31639ddb9d2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100,)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "id": "24692348-fd68-4b83-a49c-f9b2c6aa7319",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 5)"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把这个数组改成 20行5列的二维数组\n",
    "na2 = na.reshape((20,5))\n",
    "na2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "6e31b078-77ea-4ddf-ac60-d8fb43030631",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100,)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#二维转回到一维\n",
    "na = na2.reshape((100,))\n",
    "na.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f228dc31-5ba2-44b0-a5b8-058e2a1ffd67",
   "metadata": {},
   "source": [
    "## (4)NumPy索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "d0eb229c-9c5b-4614-8ac9-3d80145049c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3,  4],\n",
       "       [ 5,  6,  7,  8,  9],\n",
       "       [10, 11, 12, 13, 14],\n",
       "       [15, 16, 17, 18, 19],\n",
       "       [20, 21, 22, 23, 24],\n",
       "       [25, 26, 27, 28, 29],\n",
       "       [30, 31, 32, 33, 34],\n",
       "       [35, 36, 37, 38, 39],\n",
       "       [40, 41, 42, 43, 44],\n",
       "       [45, 46, 47, 48, 49],\n",
       "       [50, 51, 52, 53, 54],\n",
       "       [55, 56, 57, 58, 59],\n",
       "       [60, 61, 62, 63, 64],\n",
       "       [65, 66, 67, 68, 69],\n",
       "       [70, 71, 72, 73, 74],\n",
       "       [75, 76, 77, 78, 79],\n",
       "       [80, 81, 82, 83, 84],\n",
       "       [85, 86, 87, 88, 89],\n",
       "       [90, 91, 92, 93, 94],\n",
       "       [95, 96, 97, 98, 99]])"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe0a1666-6f96-4f53-926d-bec60a432299",
   "metadata": {},
   "source": [
    "### 访问第一行的第一个元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "bdd8c573-fbdb-4f57-b04b-de928d056828",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(0)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[0,0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "85aead49-7ab5-414d-8bd7-c131b4837023",
   "metadata": {},
   "source": [
    "### 访问na2数组的第一行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "f5a2dd07-37f1-4690-8347-a1406e19976d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4])"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3233aa5-c549-442c-a50d-b947604ed65d",
   "metadata": {},
   "source": [
    "### 访问na2数组的前三行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "d41d82f5-819d-4aed-8637-4f43b27a2844",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3,  4],\n",
       "       [ 5,  6,  7,  8,  9],\n",
       "       [10, 11, 12, 13, 14]])"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e386300-9305-400b-a374-127234552ca1",
   "metadata": {},
   "source": [
    "### 访问第0列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "f436b40a-9ac5-4712-abe8-5e7e55bf82e7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80,\n",
       "       85, 90, 95])"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[:,0] # 表示第一个维度的行都要，第二个维度只要第0列"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d79f1b3c-961a-4629-81ca-f4d352b6cfec",
   "metadata": {},
   "source": [
    "### 访问前3列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "a16f90b8-f588-4ea2-925e-08de409f1d60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2],\n",
       "       [ 5,  6,  7],\n",
       "       [10, 11, 12],\n",
       "       [15, 16, 17],\n",
       "       [20, 21, 22],\n",
       "       [25, 26, 27],\n",
       "       [30, 31, 32],\n",
       "       [35, 36, 37],\n",
       "       [40, 41, 42],\n",
       "       [45, 46, 47],\n",
       "       [50, 51, 52],\n",
       "       [55, 56, 57],\n",
       "       [60, 61, 62],\n",
       "       [65, 66, 67],\n",
       "       [70, 71, 72],\n",
       "       [75, 76, 77],\n",
       "       [80, 81, 82],\n",
       "       [85, 86, 87],\n",
       "       [90, 91, 92],\n",
       "       [95, 96, 97]])"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[:,:3] # 第一个维度都要，冒号3就是前3列的意思"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5206adb6-db61-40be-9d04-2af63dcf2e4a",
   "metadata": {},
   "source": [
    "### 访问前3列且前3行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "f275a06a-c92a-4a95-9366-07a8c5d9c357",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2],\n",
       "       [ 5,  6,  7],\n",
       "       [10, 11, 12]])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[:3,:3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "973344c8-923f-4db0-b17e-503039f5061c",
   "metadata": {},
   "source": [
    "## (5)NumPy筛选使用"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93f80102-db40-4896-8272-1bbf5b1a8e9d",
   "metadata": {},
   "source": [
    "### 提取数组中能被3整除的元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "25d45045-6e42-4e1e-8b85-8e4f63c70db6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True],\n",
       "       [False, False,  True, False, False],\n",
       "       [ True, False, False,  True, False],\n",
       "       [False,  True, False, False,  True]])"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2%3==0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "f253537a-31d3-46d0-bb64-1c779b9dca21",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  3,  6,  9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48,\n",
       "       51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99])"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 结合索引\n",
    "na2[na2%3==0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8131145-8b0a-4c3d-9207-d00075d91dbd",
   "metadata": {},
   "source": [
    "### 提取数组中小于9的元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "630f8039-e3ed-4871-bf5b-41cd49465db5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4, 5, 6, 7, 8])"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[na2<9]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dfb1111a-fed0-46f0-b396-4b9196583a8e",
   "metadata": {},
   "source": [
    "## (6)思考题 \n",
    "### 1.提取数组中所有奇数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "9f7e57e7-2f7c-4486-9e84-f89d6bbbc9d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,\n",
       "       35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,\n",
       "       69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99])"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[na2%2==1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56859dec-fd2d-4e96-b9a8-7fe54058f674",
   "metadata": {},
   "source": [
    "### 2.数组所有奇数替换为-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "8847fbaa-01e9-403b-b630-b018dafe1ecc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 我们使用where\n",
    "# where(condition, [x, y], /)\n",
    "# 当条件满足时，置成x，当不满足条件时，置成y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "529e3471-fd94-4a72-809e-acf2a24a2390",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0, -1,  2, -1,  4],\n",
       "       [-1,  6, -1,  8, -1],\n",
       "       [10, -1, 12, -1, 14],\n",
       "       [-1, 16, -1, 18, -1],\n",
       "       [20, -1, 22, -1, 24],\n",
       "       [-1, 26, -1, 28, -1],\n",
       "       [30, -1, 32, -1, 34],\n",
       "       [-1, 36, -1, 38, -1],\n",
       "       [40, -1, 42, -1, 44],\n",
       "       [-1, 46, -1, 48, -1],\n",
       "       [50, -1, 52, -1, 54],\n",
       "       [-1, 56, -1, 58, -1],\n",
       "       [60, -1, 62, -1, 64],\n",
       "       [-1, 66, -1, 68, -1],\n",
       "       [70, -1, 72, -1, 74],\n",
       "       [-1, 76, -1, 78, -1],\n",
       "       [80, -1, 82, -1, 84],\n",
       "       [-1, 86, -1, 88, -1],\n",
       "       [90, -1, 92, -1, 94],\n",
       "       [-1, 96, -1, 98, -1]])"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.where(na2%2==1, -1, na2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef8eaf33-b294-4dd5-8a8f-bf8d7002249e",
   "metadata": {},
   "source": [
    "### 3.二维数组交换2行或2列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "87dbd300-6a10-4566-9d9f-ed3f21299e18",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3,  4],\n",
       "       [ 5,  6,  7,  8,  9],\n",
       "       [10, 11, 12, 13, 14],\n",
       "       [15, 16, 17, 18, 19],\n",
       "       [20, 21, 22, 23, 24],\n",
       "       [25, 26, 27, 28, 29],\n",
       "       [30, 31, 32, 33, 34],\n",
       "       [35, 36, 37, 38, 39],\n",
       "       [40, 41, 42, 43, 44],\n",
       "       [45, 46, 47, 48, 49],\n",
       "       [50, 51, 52, 53, 54],\n",
       "       [55, 56, 57, 58, 59],\n",
       "       [60, 61, 62, 63, 64],\n",
       "       [65, 66, 67, 68, 69],\n",
       "       [70, 71, 72, 73, 74],\n",
       "       [75, 76, 77, 78, 79],\n",
       "       [80, 81, 82, 83, 84],\n",
       "       [85, 86, 87, 88, 89],\n",
       "       [90, 91, 92, 93, 94],\n",
       "       [95, 96, 97, 98, 99]])"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "65f98b20-719c-4cae-b9bb-9ba7c0f8ec3c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  3,  2,  1,  4],\n",
       "       [ 5,  8,  7,  6,  9],\n",
       "       [10, 13, 12, 11, 14],\n",
       "       [15, 18, 17, 16, 19],\n",
       "       [20, 23, 22, 21, 24],\n",
       "       [25, 28, 27, 26, 29],\n",
       "       [30, 33, 32, 31, 34],\n",
       "       [35, 38, 37, 36, 39],\n",
       "       [40, 43, 42, 41, 44],\n",
       "       [45, 48, 47, 46, 49],\n",
       "       [50, 53, 52, 51, 54],\n",
       "       [55, 58, 57, 56, 59],\n",
       "       [60, 63, 62, 61, 64],\n",
       "       [65, 68, 67, 66, 69],\n",
       "       [70, 73, 72, 71, 74],\n",
       "       [75, 78, 77, 76, 79],\n",
       "       [80, 83, 82, 81, 84],\n",
       "       [85, 88, 87, 86, 89],\n",
       "       [90, 93, 92, 91, 94],\n",
       "       [95, 98, 97, 96, 99]])"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# na2[:,[0,1]] 里面的[0,1]表示第1列和第2列都要显示\n",
    "na2[:,[0,3,2,1,4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "1a584c9b-d97e-4666-b8ce-4b2e1828f13f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 方式2，使用range\n",
    "mask = list(range(5))\n",
    "mask[1], mask[3] = mask[3], mask[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "cb97eb87-a97d-4256-8834-725108cb781a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 3, 2, 1, 4]"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mask"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "861c8e8c-1aa7-449a-af7a-32f7472918e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  3,  2,  1,  4],\n",
       "       [ 5,  8,  7,  6,  9],\n",
       "       [10, 13, 12, 11, 14],\n",
       "       [15, 18, 17, 16, 19],\n",
       "       [20, 23, 22, 21, 24],\n",
       "       [25, 28, 27, 26, 29],\n",
       "       [30, 33, 32, 31, 34],\n",
       "       [35, 38, 37, 36, 39],\n",
       "       [40, 43, 42, 41, 44],\n",
       "       [45, 48, 47, 46, 49],\n",
       "       [50, 53, 52, 51, 54],\n",
       "       [55, 58, 57, 56, 59],\n",
       "       [60, 63, 62, 61, 64],\n",
       "       [65, 68, 67, 66, 69],\n",
       "       [70, 73, 72, 71, 74],\n",
       "       [75, 78, 77, 76, 79],\n",
       "       [80, 83, 82, 81, 84],\n",
       "       [85, 88, 87, 86, 89],\n",
       "       [90, 93, 92, 91, 94],\n",
       "       [95, 98, 97, 96, 99]])"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[:,mask]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "37240caa-e3b9-4f72-86fe-f710866e7adc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "range(0, 20)"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 交换第1行和第5行\n",
    "range(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "01f5f5af-e430-44ea-a02e-aa6605ab1a6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(range(20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "e434e0fa-e3d1-44a2-b87d-a906797f804d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 5, 2, 3, 4, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mask = list(range(20))\n",
    "mask[1], mask[5] = mask[5], mask[1]\n",
    "mask"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "46d340cd-8ef5-4b00-a7c8-beff79ae062a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3,  4],\n",
       "       [25, 26, 27, 28, 29],\n",
       "       [10, 11, 12, 13, 14],\n",
       "       [15, 16, 17, 18, 19],\n",
       "       [20, 21, 22, 23, 24],\n",
       "       [ 5,  6,  7,  8,  9],\n",
       "       [30, 31, 32, 33, 34],\n",
       "       [35, 36, 37, 38, 39],\n",
       "       [40, 41, 42, 43, 44],\n",
       "       [45, 46, 47, 48, 49],\n",
       "       [50, 51, 52, 53, 54],\n",
       "       [55, 56, 57, 58, 59],\n",
       "       [60, 61, 62, 63, 64],\n",
       "       [65, 66, 67, 68, 69],\n",
       "       [70, 71, 72, 73, 74],\n",
       "       [75, 76, 77, 78, 79],\n",
       "       [80, 81, 82, 83, 84],\n",
       "       [85, 86, 87, 88, 89],\n",
       "       [90, 91, 92, 93, 94],\n",
       "       [95, 96, 97, 98, 99]])"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "na2[mask, :]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "61d6398b-7836-4800-8457-4f664aa5eb74",
   "metadata": {},
   "source": [
    "### 4.生成数值 5 ~ 10，shape为 (3,5) 的随机浮点数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "d41a70bf-8051-44cb-a1f8-e44d4bfb8b73",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 第一步：生成5到9的随机整数，shape是(3,5)\n",
    "# 第二步：生成一个0到1的满足均匀分布的shape为(3,5)的二维浮点数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0788249d-fbc8-4ccd-b4a1-ea85bcef20e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 7, 5, 9, 5],\n",
       "       [6, 7, 6, 8, 9],\n",
       "       [5, 5, 5, 8, 6]], dtype=int32)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "part1 = np.random.randint(5,10,(3,5))\n",
    "part1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "73f5587e-7c97-465b-8fc3-b118ba63490c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.41541272, 0.07057347, 0.51655523, 0.6191612 , 0.93984362],\n",
       "       [0.58121153, 0.02081074, 0.76758618, 0.5082855 , 0.0539666 ],\n",
       "       [0.41564914, 0.59242858, 0.08533546, 0.27928339, 0.56297554]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "part2 = np.random.rand(3,5)\n",
    "part2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8f4f940c-f0c2-4efc-9bb2-92729ab7960e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6.41541272, 7.07057347, 5.51655523, 9.6191612 , 5.93984362],\n",
       "       [6.58121153, 7.02081074, 6.76758618, 8.5082855 , 9.0539666 ],\n",
       "       [5.41564914, 5.59242858, 5.08533546, 8.27928339, 6.56297554]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "part1 + part2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba12925f-8d3f-4d22-a52c-68fe32a7fa3e",
   "metadata": {},
   "source": [
    "## (7)使用NumPy做数据归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a2b8c445-e6ad-4ef9-b6a2-d4e6cb80ab2a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "893c3fc1-57b0-465e-bcb2-1913cde7de16",
   "metadata": {},
   "outputs": [],
   "source": [
    "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5a056d10-7316-47ae-8a63-117457511190",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3.5, 3. , 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3. ,\n",
       "       3. , 4. , 4.4, 3.9, 3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3. ,\n",
       "       3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.1, 3. ,\n",
       "       3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3. , 3.8, 3.2, 3.7, 3.3, 3.2, 3.2,\n",
       "       3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2. , 3. , 2.2, 2.9, 2.9,\n",
       "       3.1, 3. , 2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3. , 2.8, 3. ,\n",
       "       2.9, 2.6, 2.4, 2.4, 2.7, 2.7, 3. , 3.4, 3.1, 2.3, 3. , 2.5, 2.6,\n",
       "       3. , 2.6, 2.3, 2.7, 3. , 2.9, 2.9, 2.5, 2.8, 3.3, 2.7, 3. , 2.9,\n",
       "       3. , 3. , 2.5, 2.9, 2.5, 3.6, 3.2, 2.7, 3. , 2.5, 2.8, 3.2, 3. ,\n",
       "       3.8, 2.6, 2.2, 3.2, 2.8, 2.8, 2.7, 3.3, 3.2, 2.8, 3. , 2.8, 3. ,\n",
       "       2.8, 3.8, 2.8, 2.8, 2.6, 3. , 3.4, 3.1, 3. , 3.1, 3.1, 3.1, 2.7,\n",
       "       3.2, 3.3, 3. , 2.5, 3. , 3.4, 3. ])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把数据下载下来，并使用第一列\n",
    "wid = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[1])\n",
    "wid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "6303e49c-5de4-4122-8bb3-b6e4d2538013",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150,)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wid.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "92dd4015-42d9-4927-9496-9517330b95b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 因为我们要做数据的归一化，所以我们要求出数据的最大值和最小值\n",
    "smax = np.max(wid)\n",
    "smin = np.min(wid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c11868d8-6d8c-4a82-9352-2a062dc28da9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 归一化公式 (wid - smin) / (smax - smin)\n",
    "s = (wid - smin) / (smax - smin)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "ae26163b-b3ea-4932-90e6-a49077b7c4cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.625     , 0.41666667, 0.5       , 0.45833333, 0.66666667,\n",
       "       0.79166667, 0.58333333, 0.58333333, 0.375     , 0.45833333,\n",
       "       0.70833333, 0.58333333, 0.41666667, 0.41666667, 0.83333333,\n",
       "       1.        , 0.79166667, 0.625     , 0.75      , 0.75      ,\n",
       "       0.58333333, 0.70833333, 0.66666667, 0.54166667, 0.58333333,\n",
       "       0.41666667, 0.58333333, 0.625     , 0.58333333, 0.5       ,\n",
       "       0.45833333, 0.58333333, 0.875     , 0.91666667, 0.45833333,\n",
       "       0.5       , 0.625     , 0.45833333, 0.41666667, 0.58333333,\n",
       "       0.625     , 0.125     , 0.5       , 0.625     , 0.75      ,\n",
       "       0.41666667, 0.75      , 0.5       , 0.70833333, 0.54166667,\n",
       "       0.5       , 0.5       , 0.45833333, 0.125     , 0.33333333,\n",
       "       0.33333333, 0.54166667, 0.16666667, 0.375     , 0.29166667,\n",
       "       0.        , 0.41666667, 0.08333333, 0.375     , 0.375     ,\n",
       "       0.45833333, 0.41666667, 0.29166667, 0.08333333, 0.20833333,\n",
       "       0.5       , 0.33333333, 0.20833333, 0.33333333, 0.375     ,\n",
       "       0.41666667, 0.33333333, 0.41666667, 0.375     , 0.25      ,\n",
       "       0.16666667, 0.16666667, 0.29166667, 0.29166667, 0.41666667,\n",
       "       0.58333333, 0.45833333, 0.125     , 0.41666667, 0.20833333,\n",
       "       0.25      , 0.41666667, 0.25      , 0.125     , 0.29166667,\n",
       "       0.41666667, 0.375     , 0.375     , 0.20833333, 0.33333333,\n",
       "       0.54166667, 0.29166667, 0.41666667, 0.375     , 0.41666667,\n",
       "       0.41666667, 0.20833333, 0.375     , 0.20833333, 0.66666667,\n",
       "       0.5       , 0.29166667, 0.41666667, 0.20833333, 0.33333333,\n",
       "       0.5       , 0.41666667, 0.75      , 0.25      , 0.08333333,\n",
       "       0.5       , 0.33333333, 0.33333333, 0.29166667, 0.54166667,\n",
       "       0.5       , 0.33333333, 0.41666667, 0.33333333, 0.41666667,\n",
       "       0.33333333, 0.75      , 0.33333333, 0.33333333, 0.25      ,\n",
       "       0.41666667, 0.58333333, 0.45833333, 0.41666667, 0.45833333,\n",
       "       0.45833333, 0.45833333, 0.29166667, 0.5       , 0.54166667,\n",
       "       0.41666667, 0.20833333, 0.41666667, 0.58333333, 0.41666667])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "320fa386-d131-40e6-ba3f-50b789664c9b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补充：最大值和最小值的差值可以直接使用 np.ptp(arr)\n",
    "s = (wid - smin) / np.ptp(wid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "907eae76-51b0-4760-8446-5ea7cc02d54c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.625     , 0.41666667, 0.5       , 0.45833333, 0.66666667,\n",
       "       0.79166667, 0.58333333, 0.58333333, 0.375     , 0.45833333,\n",
       "       0.70833333, 0.58333333, 0.41666667, 0.41666667, 0.83333333,\n",
       "       1.        , 0.79166667, 0.625     , 0.75      , 0.75      ,\n",
       "       0.58333333, 0.70833333, 0.66666667, 0.54166667, 0.58333333,\n",
       "       0.41666667, 0.58333333, 0.625     , 0.58333333, 0.5       ,\n",
       "       0.45833333, 0.58333333, 0.875     , 0.91666667, 0.45833333,\n",
       "       0.5       , 0.625     , 0.45833333, 0.41666667, 0.58333333,\n",
       "       0.625     , 0.125     , 0.5       , 0.625     , 0.75      ,\n",
       "       0.41666667, 0.75      , 0.5       , 0.70833333, 0.54166667,\n",
       "       0.5       , 0.5       , 0.45833333, 0.125     , 0.33333333,\n",
       "       0.33333333, 0.54166667, 0.16666667, 0.375     , 0.29166667,\n",
       "       0.        , 0.41666667, 0.08333333, 0.375     , 0.375     ,\n",
       "       0.45833333, 0.41666667, 0.29166667, 0.08333333, 0.20833333,\n",
       "       0.5       , 0.33333333, 0.20833333, 0.33333333, 0.375     ,\n",
       "       0.41666667, 0.33333333, 0.41666667, 0.375     , 0.25      ,\n",
       "       0.16666667, 0.16666667, 0.29166667, 0.29166667, 0.41666667,\n",
       "       0.58333333, 0.45833333, 0.125     , 0.41666667, 0.20833333,\n",
       "       0.25      , 0.41666667, 0.25      , 0.125     , 0.29166667,\n",
       "       0.41666667, 0.375     , 0.375     , 0.20833333, 0.33333333,\n",
       "       0.54166667, 0.29166667, 0.41666667, 0.375     , 0.41666667,\n",
       "       0.41666667, 0.20833333, 0.375     , 0.20833333, 0.66666667,\n",
       "       0.5       , 0.29166667, 0.41666667, 0.20833333, 0.33333333,\n",
       "       0.5       , 0.41666667, 0.75      , 0.25      , 0.08333333,\n",
       "       0.5       , 0.33333333, 0.33333333, 0.29166667, 0.54166667,\n",
       "       0.5       , 0.33333333, 0.41666667, 0.33333333, 0.41666667,\n",
       "       0.33333333, 0.75      , 0.33333333, 0.33333333, 0.25      ,\n",
       "       0.41666667, 0.58333333, 0.45833333, 0.41666667, 0.45833333,\n",
       "       0.45833333, 0.45833333, 0.29166667, 0.5       , 0.54166667,\n",
       "       0.41666667, 0.20833333, 0.41666667, 0.58333333, 0.41666667])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "346c1c5a-2c45-45db-aaf1-ca1bf47a07ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置打印的精度的位数\n",
    "np.set_printoptions(precision=3)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "b692c27d-fca8-4286-9b61-6952ff129bc4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.625, 0.417, 0.5  , 0.458, 0.667, 0.792, 0.583, 0.583, 0.375,\n",
       "       0.458, 0.708, 0.583, 0.417, 0.417, 0.833, 1.   , 0.792, 0.625,\n",
       "       0.75 , 0.75 , 0.583, 0.708, 0.667, 0.542, 0.583, 0.417, 0.583,\n",
       "       0.625, 0.583, 0.5  , 0.458, 0.583, 0.875, 0.917, 0.458, 0.5  ,\n",
       "       0.625, 0.458, 0.417, 0.583, 0.625, 0.125, 0.5  , 0.625, 0.75 ,\n",
       "       0.417, 0.75 , 0.5  , 0.708, 0.542, 0.5  , 0.5  , 0.458, 0.125,\n",
       "       0.333, 0.333, 0.542, 0.167, 0.375, 0.292, 0.   , 0.417, 0.083,\n",
       "       0.375, 0.375, 0.458, 0.417, 0.292, 0.083, 0.208, 0.5  , 0.333,\n",
       "       0.208, 0.333, 0.375, 0.417, 0.333, 0.417, 0.375, 0.25 , 0.167,\n",
       "       0.167, 0.292, 0.292, 0.417, 0.583, 0.458, 0.125, 0.417, 0.208,\n",
       "       0.25 , 0.417, 0.25 , 0.125, 0.292, 0.417, 0.375, 0.375, 0.208,\n",
       "       0.333, 0.542, 0.292, 0.417, 0.375, 0.417, 0.417, 0.208, 0.375,\n",
       "       0.208, 0.667, 0.5  , 0.292, 0.417, 0.208, 0.333, 0.5  , 0.417,\n",
       "       0.75 , 0.25 , 0.083, 0.5  , 0.333, 0.333, 0.292, 0.542, 0.5  ,\n",
       "       0.333, 0.417, 0.333, 0.417, 0.333, 0.75 , 0.333, 0.333, 0.25 ,\n",
       "       0.417, 0.583, 0.458, 0.417, 0.458, 0.458, 0.458, 0.292, 0.5  ,\n",
       "       0.542, 0.417, 0.208, 0.417, 0.583, 0.417])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = (wid - smin) / (smax - smin)\n",
    "s"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16903beb-eb5a-4f9f-9176-9404cf9a7f58",
   "metadata": {},
   "source": [
    "# 3 NumPy进阶"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b5c2158-3367-473a-a116-8f4acf830316",
   "metadata": {},
   "source": [
    "## (1)NumPy元素级操作介绍"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "47524b1d-70d3-4c89-9fbb-6c92bb5a42d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "a973c60e-6142-4849-a8bd-8c664166526c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v1 = np.arange(5)\n",
    "v1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "05651d85-a114-431f-947c-b94c76f4ef43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2, 3, 4, 5, 6])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 让 v1 数组中每个元素都加上2\n",
    "v1 + 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "fc5aceb9-fd49-4b05-a084-efd54016af3b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  1,  4,  9, 16])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 让 v1 数组和自己相乘\n",
    "v1 * v1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "5e623173-258a-47be-8427-7a4f5aefc295",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2, 3, 4]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 改变维度，变成1行5列\n",
    "v2 = v1.reshape((1,5))\n",
    "v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "1b8100ee-ec3c-4e29-a41b-bf9f9740edc7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2],\n",
       "       [ 3,  4,  5],\n",
       "       [ 6,  7,  8],\n",
       "       [ 9, 10, 11],\n",
       "       [12, 13, 14]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成一个5行3列的二维数组\n",
    "v3 = np.arange(15).reshape(5,3)\n",
    "v3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "495eff76-1c3f-415f-985f-a7444eb903d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 注意：如果想要在numpy中对应元素相加，相减...需要满足它们\n",
    "# 的shape形状至少一个维度相等，并且对应维度的数组长度相等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "52c8d6ac-9667-4e4d-b0db-f60fad31a6fe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3,  4],\n",
       "       [ 5,  6,  7,  8,  9],\n",
       "       [10, 11, 12, 13, 14]])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v4 = np.arange(15).reshape(3,5)\n",
    "v4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "f8fd5a0d-9f25-499e-88cd-b55f23356c40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  2,  4,  6,  8],\n",
       "       [ 5,  7,  9, 11, 13],\n",
       "       [10, 12, 14, 16, 18]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# v2中的元素都和 v4 对应列的元素相加\n",
    "v2 + v4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "2c361fd0-cdf6-4bf3-9030-3b6ae465687f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2, 3, 4]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "0052ab88-22a1-4b4a-a27d-3233630e8127",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2, 3],\n",
       "       [4, 5, 6, 7]])"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# test -- \n",
    "x1 = np.arange(8).reshape(2,4)\n",
    "x1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "257276f1-c925-429e-a1d1-546d6292c0e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3],\n",
       "       [ 4,  5,  6,  7],\n",
       "       [ 8,  9, 10, 11],\n",
       "       [12, 13, 14, 15]])"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x2 = np.arange(16).reshape(4,4)\n",
    "x2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "cafdd7f3-3699-402e-97f7-1fef447a48a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 疑问：x1 + x2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0f066cb-638f-4199-acfd-2042926dec32",
   "metadata": {},
   "source": [
    "## (2)NumPy做矩阵乘法实现两种方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "f2453c75-f0b4-4117-93ce-8c115d61349d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "69eec241-9ba9-4020-9b9e-72e6c7585837",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2]])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v1 = np.arange(3).reshape(1,3)\n",
    "v1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "acbb5ee0-73fc-4446-9804-3a1ec91439ec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1],\n",
       "       [2, 3],\n",
       "       [4, 5]])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v2 = np.arange(6).reshape((3,2))\n",
    "v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "87358e1c-615d-481c-ba9d-5e074c97ac0d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8deac5cf-3257-47c9-afaf-0301037b43c5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0a68384b-9030-46a8-a7d6-7eb8827379e7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "19f909ab-4b52-4f83-8804-981b82d3d930",
   "metadata": {},
   "source": [
    "## (3)求平均值、求和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9af3d76e-b6af-4c52-88e6-d1cafbea5acf",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e752822c-a7c1-446b-a253-206ffa9fa2c6",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "92664a3a-2beb-4a18-920e-92be5dd4b893",
   "metadata": {},
   "source": [
    "## (4)求标准差、方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9cb06ae2-6aef-4847-b233-b69f129f5370",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "926fed44-4519-4a39-931d-6637a3f0d2cd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "38b50477-a12e-4d21-9a5c-374b4517cc9b",
   "metadata": {},
   "source": [
    "## (5)求最大、最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8c5c6bff-ed22-4de2-b61a-faa5d020b5be",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5c530cce-adb3-40d1-980c-abb836554a3a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "63697ce1-3f05-459d-bb51-04a51318269e",
   "metadata": {},
   "source": [
    "## (6)求累乘、求累和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d1958fb4-576a-44e0-8aac-9b8dbbbb6a62",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f4214cfa-b66d-489d-a207-340ec6852863",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "2edba27b-05bb-41a6-ba6e-d2b33c3d6aa1",
   "metadata": {},
   "source": [
    "## (7)求迹"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d74a1ee1-6164-457f-94c2-29b5373851c3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2cea2caa-5022-4f85-bf63-41ef255bfb15",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "0bf099be-8b2e-40a1-8a2d-55782374f2ca",
   "metadata": {},
   "source": [
    "## (8)高维数组变为向量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7958f5ea-5064-4d68-9fb3-5044f65930f2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "421d0078-55e3-4e76-aea7-702d8b4e2283",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "e0868e31-db7c-4771-bc15-a2b2fc547fa8",
   "metadata": {},
   "source": [
    "## (9)增加一个维度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ee19b846-1eff-4fd0-918e-1fb274308519",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5c915adf-837c-49e4-b0a9-99d2b7f9928a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "601b6cef-f969-4d63-9285-5004bbbfb9d5",
   "metadata": {},
   "source": [
    "## (10)在某一维度做元素复制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fcd87a80-b580-45e3-b8ed-92c7d189d10b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fbcb809c-25b4-43d0-994c-5c0a9e683d3c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "8520ccc7-fbed-4ab8-a29d-846c0e10c794",
   "metadata": {},
   "source": [
    "## (11)实现按块复制元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "50c562f9-db42-4104-b886-032368e2326b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ae249085-a3f9-4c06-b4b1-86f0e019e157",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "a10604b6-7f16-4d28-b046-6df369412ae4",
   "metadata": {},
   "source": [
    "## (12)水平或竖直方向合并多个数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "14fce91a-2477-469a-ae90-a382c17cf8db",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ff2a8810-7e44-4cd5-8f7f-f6d72aa05016",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "d46ba154-a847-4d65-9cf9-c2a3ebdd738a",
   "metadata": {},
   "source": [
    "## (13)返回数组中某个维度的最大或最小值索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c51e036a-8303-4d2a-a808-a8aefa304252",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4c87d850-bf9d-4568-91d4-731bd9eefdd8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c4a8acad-3ebf-4930-b34f-f7782b6011b8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "83672844-e8d0-4de5-894b-03b74f4efb45",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
